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()
我想创建一个嵌套菜单,包含三层文件->电路->,然后选择“全半”选项,后面的选项可检查和排他。对于可检查但不是排他性的项目,我已经实现了这一点。
最初我使用此示例 (
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()