Problem integrating QFontComboBox in Qmenu

68 Views Asked by At

I'm trying to integrate QFontComboBox within Qmenu. I try to make two things happen when selecting a particular font from the menu:

  1. The Qmenu will close.
  2. print the selected font.

from PyQt5.QtCore import QObject
from PyQt5.QtGui import QIcon, QFont, QCursor
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFontComboBox, QWidgetAction, QMenu, QPushButton
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Pyside2 FontCombo Box")
        self.setGeometry(300,200,300,250)
        self.setFontBox()
        self.setIcon()
        self.show()
    def setIcon(self):
        appIcon = QIcon("icon.png")
        self.setWindowIcon(appIcon)
    def setFontBox(self):
        self.font_button = QPushButton(self)
        self.font_button.setFixedWidth(300)
        self.font_button.clicked.connect(lambda: self.setFontmenu())
        vbox = QVBoxLayout()
        vbox.addWidget(self.font_button)
        self.setLayout(vbox)
    def setFontmenu(self):
        font_menu = QMenu()
        font_submenu = QFontComboBox()
        font_submenu.setCurrentFont(QFont("Arial"))
        objectTest = QObject()
        widget = QWidgetAction(objectTest)
        widget.setDefaultWidget(font_submenu)
        font_menu.addAction(widget)
        font_menu.exec_(QCursor.pos())
        menu = font_menu
        menu.addSeparator()
        font_submenu.showPopup()
        font_submenu.setFocus()
        font_submenu.currentFontChanged.connect(self._changed)
    def _changed(self):
        font = self.currentFont().family()
        print(font)
        return
myapp = QApplication(sys.argv)
window = Window()
myapp.exec_()
sys.exit()
0

There are 0 best solutions below