Python&;PyQt4:setMenu方法不适用于按钮对象

Python&;PyQt4:setMenu方法不适用于按钮对象,python,menu,pyqt,pyqt4,qpushbutton,Python,Menu,Pyqt,Pyqt4,Qpushbutton,我是PyQt的新手,正在开发一个PyQt4 GUI,它有一个按钮,定义如下: self.buttonFormule11=QtGui.QPushButton(self.centralwidget) self.buttonFormule11.setGeometry(QtCore.QRect(268, 696, 19, 23)) self.buttonFormule11.setObjectName(_fromUtf8("buttonFormule11")) self.buttonFormule11.s

我是PyQt的新手,正在开发一个PyQt4 GUI,它有一个按钮,定义如下:

self.buttonFormule11=QtGui.QPushButton(self.centralwidget)
self.buttonFormule11.setGeometry(QtCore.QRect(268, 696, 19, 23))
self.buttonFormule11.setObjectName(_fromUtf8("buttonFormule11"))
self.buttonFormule11.setFlat(True) 
我想在其上设置一个菜单,因此我尝试遵循同一界面中其他按钮的相同逻辑(我没有编程):


但是,这个程序不起作用,因为当我点击按钮时,没有显示菜单。有人能告诉我我是否忘记了什么/哪里出了问题吗

您发布的代码似乎没有任何问题(我测试了它,它适合我)。因此,问题一定存在于代码的其他地方

然而,我认为示例代码使用了一种有点奇怪的方法,因此我重新编写了它以供使用

下面是一个简单的演示:

from PyQt4 import QtGui

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.button = QtGui.QPushButton('Test', self)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.button)
        menu = QtGui.QMenu(self.button)
        group = QtGui.QActionGroup(self.button)
        group.setExclusive(True)
        for index in range(1, 4):
            action = group.addAction('Option%d' % index)
            action.setCheckable(True)
            if index == 1:
                action.setChecked(True)
            menu.addAction(action)
        self.button.setMenu(menu)
        group.triggered.connect(self.handleOptionTriggered)

    def handleOptionTriggered(self, action):
        print(action.text())

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 300, 200, 100)
    window.show()
    sys.exit(app.exec_())
from PyQt4 import QtGui

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.button = QtGui.QPushButton('Test', self)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.button)
        menu = QtGui.QMenu(self.button)
        group = QtGui.QActionGroup(self.button)
        group.setExclusive(True)
        for index in range(1, 4):
            action = group.addAction('Option%d' % index)
            action.setCheckable(True)
            if index == 1:
                action.setChecked(True)
            menu.addAction(action)
        self.button.setMenu(menu)
        group.triggered.connect(self.handleOptionTriggered)

    def handleOptionTriggered(self, action):
        print(action.text())

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 300, 200, 100)
    window.show()
    sys.exit(app.exec_())