Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyQT QPushButton.setMenu? How to make it work?

Tags:

python

pyqt

pyqt4

im just a beginner in PyQT. and im not sure if my thread title is the correct thing to put for my problem.

im having a problem creating a popmenu on a Qpushbutton. based on the doc of QT docs

i need to make a QPushButton.setMenu (self, QMenu menu)

but i really dont know where to start.. i cant find a sample on how to use this. please help me making one.

like image 559
Katherina Avatar asked Dec 28 '22 16:12

Katherina


1 Answers

The basic idea is that you first have to create a QMenu, then use the setMenu method to attach it to your push button. If you look at the QMenu documentation, you'll see that there is a method called addAction that will add menu items to your newly created QMenu. addAction is overloaded, so there are a lot of different ways to call it. You can use icons in your menu, specify keyboard shortcuts and other things. To keep things simple though, let's just add a menu item and give it a method to call if that item is selected.

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_()

Here we've created a push button (creatively named pushbutton). We then create a menu (again creatively named menu) using QtGui.QMenu(). The actions are created by calling addAction and giving it a string that will be used as the menu item text and a method (self.Action1 or self.Action2) that will be called if that menu item is selected. Then we call the setMenu method of pushbutton to assign our menu to it. When you run it and select an item, you should see text printed corresponding to the selected item.

That's the basic idea. You can look through the QMenu docs to get a better idea of the functionality of QMenu.

like image 62
Stephen Terry Avatar answered Dec 31 '22 14:12

Stephen Terry