Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在QMenu中一次可检查一个QAction_Python_Python 3.x_Pyqt_Pyqt5_Qmenu - Fatal编程技术网

Python 在QMenu中一次可检查一个QAction

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

我试图使我从QMenu中的选择可以检查,这样在同一时间只能选择一个选项,并且默认情况下第一项被设置为选中(这实际上是可行的)

以下是我的代码片段:

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