Основная идея заключается в том, что сначала вам нужно создать 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
).Затем мы создаем меню (снова с креативным названием menu
), используя QtGui.QMenu()
.Действия создаются путем вызова addAction
и присвоения ему строки, которая будет использоваться в качестве текста пункта меню, и метода (self.Action1 или self.Action2), который будет вызываться, если выбран этот пункт меню.Затем мы вызываем setMenu
метод pushbutton
, чтобы назначить ему наше меню.Когда вы запустите его и выберете элемент, вы должны увидеть напечатанный текст, соответствующий выбранному элементу.
Это основная идея.Вы можете просмотреть QMenu docs , чтобы получить более полное представление о функциональности QMenu.