Python PyQT QPushButton.setMenu?如何让它工作?
我只是PyQT的初学者。 我不确定我的线程标题是否是解决我问题的正确方法 我在Qpushbutton上创建popmenu时遇到问题。 根据 我需要制作一个QPushButton.setMenu(self,QMenu菜单) 但是我真的不知道从哪里开始。。我找不到如何使用这个的样品。Python PyQT QPushButton.setMenu?如何让它工作?,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我只是PyQT的初学者。 我不确定我的线程标题是否是解决我问题的正确方法 我在Qpushbutton上创建popmenu时遇到问题。 根据 我需要制作一个QPushButton.setMenu(self,QMenu菜单) 但是我真的不知道从哪里开始。。我找不到如何使用这个的样品。 请帮我制作一个。基本思想是,首先必须创建一个QMenu,然后使用setMenu方法将其附加到按钮上。如果查看QMenu,您将看到一个名为addAction的方法,它将向新创建的QMenu中添加菜单项addAction是
请帮我制作一个。基本思想是,首先必须创建一个
QMenu
,然后使用setMenu
方法将其附加到按钮上。如果查看QMenu
,您将看到一个名为addAction
的方法,它将向新创建的QMenu
中添加菜单项addAction
是重载的,因此有很多不同的方法来调用它。您可以使用菜单中的图标,指定键盘快捷键和其他内容。不过为了简单起见,我们只需添加一个菜单项,并在选中该项时为其提供一个调用方法
from PyQt4 import QtGui, QtCore
import sys
class Main(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
pushbutton = QtGui.QPushButton('Popup Button')
menu = QtGui.QMenu()
menu.addAction('This is Action 1', self.Action1)
menu.addAction('This is Action 2', self.Action2)
pushbutton.setMenu(menu)
self.setCentralWidget(pushbutton)
def Action1(self):
print 'You selected Action 1'
def Action2(self):
print 'You selected Action 2'
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
app.exec_()
这里我们创建了一个按钮(创造性地命名为按钮
)。然后,我们使用QtGui.QMenu()
创建一个菜单(再次创造性地命名为menu
)。通过调用addAction
并为其提供一个将用作菜单项文本的字符串和一个方法(self.Action1或self.Action2)来创建操作,如果选择了该菜单项,将调用该方法。然后我们调用按钮的设置菜单
方法
,将菜单分配给它。当您运行它并选择一个项目时,您应该会看到对应于所选项目打印的文本
这是基本的想法。您可以浏览QMenu,更好地了解QMenu的功能。嗨,Stephen,这正是我学习所需要的。非常感谢你。没有这样的例子,我很难理解。。再次感谢你的回答,斯蒂芬。我只想指出一个警告-从Qt 5.3.2开始,您需要在调用
setMenu
之前完成菜单.addAction
s-否则弹出的菜单大小不正确(并部分显示添加的项)。另一个选项是在显示菜单之前调用setMenu(menu())
。似乎QMenu应该保存在某个地方,因为“菜单的所有权不会转移到按钮”(来自文档)。如果不保存菜单,它对我来说就无法正常工作。