Python 在QMenu中一次可检查一个QAction
我试图使我从QMenu中的选择可以检查,这样在同一时间只能选择一个选项,并且默认情况下第一项被设置为选中(这实际上是可行的) 以下是我的代码片段:Python 在QMenu中一次可检查一个QAction,python,python-3.x,pyqt,pyqt5,qmenu,Python,Python 3.x,Pyqt,Pyqt5,Qmenu,我试图使我从QMenu中的选择可以检查,这样在同一时间只能选择一个选项,并且默认情况下第一项被设置为选中(这实际上是可行的) 以下是我的代码片段: paymentType = QMenu('Payment Type', self) paymentType.addAction(QAction('Cash', paymentType, checkable=True, checked = True)) paymentType.addAction(QAction('Noncash Payment', p
paymentType = QMenu('Payment Type', self)
paymentType.addAction(QAction('Cash', paymentType, checkable=True, checked = True))
paymentType.addAction(QAction('Noncash Payment', paymentType, checkable=True))
paymentType.addAction(QAction('Cash on Delivery', paymentType, checkable=True))
paymentType.addAction(QAction('Bank Transfer', paymentType, checkable=True))
menu.addMenu(paymentType)
有什么建议吗?谢谢 一个可能的选项是使用并激活该属性
有没有办法将self.menuBar()作为QMainWindow类的属性而不是创建QMenuBar?如果是这样的话,实现将类似于:menu=self.menuBar(),然后是menu.addMenu(paymentType)?我试过这个,但似乎不起作用?Thanks@New2Python这对我来说似乎很奇怪,我使用QMainWindow放置了一个示例,它可以正常工作,如果这个示例有问题,那么我需要您显示一个我可以使用的代码。您是对的,我在该上下文中错过了QMenu()的自参数。现在它起作用了。谢谢有没有关于如何检索isChecked()信息的建议?想象一下,当用户希望在默认情况下将其设置为现金,因此不会触发按钮,但是,在其他事件中,我们需要提取此信息并检索选中的项目。Thanks@New2Python如果您已经阅读了QActionGroup的相关内容,那么它将返回所选的QAction。我建议您在询问之前先阅读文档:D
import sys
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
menu = self.menuBar()
paymentType = QMenu('Payment Type', self)
group = QActionGroup(paymentType)
texts = ["Cash", "Noncash Payment", "Cash on Delivery", "Bank Transfer"]
for text in texts:
action = QAction(text, paymentType, checkable=True, checked=text==texts[0])
paymentType.addAction(action)
group.addAction(action)
group.setExclusive(True)
group.triggered.connect(self.onTriggered)
menu.addMenu(paymentType)
def onTriggered(self, action):
print(action.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())