PyQT QPushButton.setMenu?Как заставить это работать? - PullRequest
2 голосов
/ 01 августа 2011

я просто новичок в PyQT. и я не уверен, что название моей темы - правильная вещь для моей проблемы.

У меня возникла проблема при создании всплывающего меню на кнопке Qpush. основано на документе документация QT

мне нужно сделать QPushButton.setMenu (само, меню QMenu)

но я действительно не знаю, с чего начать .. Я не могу найти пример того, как это использовать. пожалуйста, помогите мне сделать один.

1 Ответ

8 голосов
/ 01 августа 2011

Основная идея заключается в том, что сначала вам нужно создать 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.

...