Introduction to PyQt4

Check out the new site at

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


We start with a "Hello... Close Button". When you launch the QTDesigner you will be able to chose base window type:
We choose simple Widget, which will give us a simple window. From the right menu we drag one Push Button on to the window:
Right-Click on the pushButton will allow us to change its caption (displayed text).
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:
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:
A Signal-Slots window should appear:
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 >
Next create 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()

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


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:
The code from is a general code for running and extending GUI classes generated by pyuic4.

PyQt and GUI, 14 July 2008

Check out the new site at
Comment article
Comment article RkBlog main page Search RSS Contact