可以在带有嵌套菜单的QMenu中及时检查QAction

时间:2019-08-12 07:23:38

标签: python pyqt pyqt5 qmenu

我想创建一个具有三个级别的嵌套菜单File-> Circuit->,然后选择Full Full of Half的选项,以后的选项可检查和排他。关于可检查的项目,尽管不是排他性的,我已经实现了这一目标。

尽管我无法添加另一个嵌套的组级别,但最初我使用了该示例(One QAction checkable at time in QMenu)将setExclusive在一个组中。我可以设置“文件”->“电路选择”,但不能设置“全选”或“半选”,这就是我选择以下方法设置菜单级别数的原因。

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QMenu, QApplication

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.menubar = self.menuBar()
        self.fileMenu = self.menubar.addMenu('File')

        self.impMenu = QMenu('Circuit', self)
        self.impAct0 = QAction('Half Bridge', self, checkable=True, checked=True) 
        self.impAct1 = QAction('Full Bridge', self, checkable=True, checked=False) 
        self.impMenu.addAction(self.impAct0)
        self.impMenu.addAction(self.impAct1)
        self.fileMenu.addMenu(self.impMenu)

        self.setGeometry(300, 300, 300, 200)
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

在问题链接的示例中,遵循被接受的答案:

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.menubar = self.menuBar()
        self.fileMenu = self.menubar.addMenu('File')

        self.impMenu = QMenu('Circuit', self)
        self.impAct0 = QAction('Half Bridge', self, checkable=True, checked=True)
        self.impAct1 = QAction('Full Bridge', self, checkable=True, checked=False)
        self.impMenu.addAction(self.impAct0)
        self.impMenu.addAction(self.impAct1)
        self.fileMenu.addMenu(self.impMenu)

        self.setGeometry(300, 300, 300, 200)

        self.action_group = QActionGroup(self)
        self.action_group.addAction(self.impAct0)
        self.action_group.addAction(self.impAct1)
        self.action_group.setExclusive(True)

        self.show()

相关问题