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

QAction checkable at time in QMenu with nested menu

我想创建一个嵌套菜单,包含三层文件->电路->,然后选择“全半”选项,后面的选项可检查和排他。对于可检查但不是排他性的项目,我已经实现了这一点。

最初我使用此示例 () 在组中设置独占,但我无法添加另一个嵌套组级别。我可以设置文件->然后电路选择但不能全选或半选,所以我选择下面的方法来设置菜单级数。

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_())

按照问题中链接的示例中接受的答案:

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()