Introduction to PyQt4

Check out the new site at https://rkblog.dev.

Creating an application in PyQT4 may be done in a few ways. The most common one is to use QTDesigner, which we get with QT. QTDesigner let us draw the GUI which is very handy for complicated interfaces. We can place widgets on the window, add names etc. To create an application in PyQT4 you have to:

  • Create the GUI in QTDesigner
  • Set names in the Property Editor to ease coding of the application (QTDesigner)
  • Using pyuic4 create the python GUI class
  • Call the application using that GUI class
  • Extend it with our own slots
  • When you use a widget you go to PyQt's Classes and check methods of each used widgets. The method names as "setText" are very easy to understand.

Tutorials List

Introduction

We start with a "Hello... Close Button". When you launch the QTDesigner you will be able to chose base window type:
pyqt4_1
We choose simple Widget, which will give us a simple window. From the right menu we drag one Push Button on to the window:
pyqt4_2
Right-Click on the pushButton will allow us to change its caption (displayed text).
pyqt4_3
When the GUI is done we can use QTDesigner to connect widgets with "simple" predefined slots - in our case we want the "close()" slot which will close the application. To do that we have to switch to Signal Editing:
pyqt4_6
To connect a widget with a signal press the mouse button over the pushButton and move the mouse pointer over the wiget window and then drop:
pyqt4_5
A Signal-Slots window should appear:
pyqt4_4
The signal is clicked() and slot is close. Now we save the gui as for example test.ui. In the terminal go to the folder with saved GUI (ui file) and type:
pyuic4 test.ui > test_ui.py
Next create test.py file with the code:
import sys
from PyQt4 import QtCore, QtGui

from test_ui import Ui_Form


class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())
And run it:
python test.py
You will see our application, and when you click the button it will close.

Notes

Ui_Form is the class name generated by pyuic4 the "Form" part is the name of the main window. You can change it in QTDesigner (we will do this in next tutorial). You have to change the objectName:
pyqt4_7
The code from test.py is a general code for running and extending GUI classes generated by pyuic4.
RkBlog

PyQt and GUI, 14 July 2008


Check out the new site at https://rkblog.dev.
Comment article
Comment article RkBlog main page Search RSS Contact