如何让PyQT QPushButton.setMenu工作?
我刚开始学习PyQT,
不太确定我这个标题是不是说的对。
我在QPushButton上创建一个弹出菜单时遇到了问题。
根据QT文档,
我需要使用QPushButton.setMenu (self, QMenu menu)这个方法。
但是我真的不知道从哪里开始……我找不到任何示例来教我怎么用这个。
请帮我做一个。
1 个回答
11
基本的想法是,首先你需要创建一个 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_()
在这里,我们创建了一个按钮(名字很有创意,叫 pushbutton
)。然后我们使用 QtGui.QMenu()
创建一个菜单(同样名字很有创意,叫 menu
)。通过调用 addAction
方法来创建菜单项,给它一个字符串作为菜单项的文本,以及一个方法(self.Action1 或 self.Action2),这个方法会在选中该菜单项时被调用。接着,我们调用 pushbutton
的 setMenu
方法,把我们的菜单分配给它。当你运行这个程序并选择一个菜单项时,你应该能看到与选中项对应的文本被打印出来。
这就是基本的思路。你可以查看 QMenu 的 文档,更好地了解 QMenu 的功能。