PyQt is a Python binding to the popular cross-platform Qt application framework commonly used to make graphical applications. PyQt4 supports Qt4 and PyQt5 supports Qt5. It runs on all platforms supported by Qt (Windows, OS X, Linux, iOS and Android). The bindings are implemented as a set of Python modules and classes.
For more information see the PyQt website.
Suggested Install Method
Windows: Download and run the binary setup file.
Linux(Debian): Run this command in your command line:
$ apt-get install python-qt4 pyqt4-dev-tools qt4-designer
OS X : Run this command in your command line:
$ brew install pyqt
You can also download the source code manually from here and then install and configure it yourself.
Test your installation
If pyqt is installed correctly, you will be able to run the
pyuic4 command. If it is installed correctly, you will see the following error:
$ pyuic4 Error: one input ui-file must be specified
You have now installed the PyQt4 library. Two useful applications have also been installed along side PyQt4:
.uifiles into Python code.
The following example shows a basic main GUI window with a label widget, a toolbar, and a status bar using PyQt4.
import sys from PyQt4 import QtGui class App(QtGui.QApplication): def __init__(self, sys_argv): super(App, self).__init__(sys_argv) self.build_ui() def build_ui(self): # build a main GUI window self.main_window = QtGui.QMainWindow() self.main_window.setWindowTitle('App') self.main_window.show() # add a label to the main window label = QtGui.QLabel('Label') self.main_window.setCentralWidget(label) # add a toolbar with an action button to the main window action = QtGui.QAction('Toolbar action', self) toolbar = QtGui.QToolBar() toolbar.addAction(action) self.main_window.addToolBar(toolbar) # add a status bar to the main window status_bar = QtGui.QStatusBar() status_bar.showMessage('Status bar') self.main_window.setStatusBar(status_bar) if __name__ == '__main__': app = App(sys.argv) sys.exit(app.exec_())
This basic code will launch a "Hello world" GUI window using PyQt4:
import sys from PyQt4 import QtGui # create instance of QApplication app = QtGui.QApplication(sys.argv) # create QLabel, without parent it will be shown as window label = QtGui.QLabel('Hello world!') label.show() # start the execution loop of the application sys.exit(app.exec_())
This is the same code using PyQt5.
import sys from PyQt5 import QtWidgets # create instance of QApplication app = QtWidgets.QApplication(sys.argv) # create QLabel, without parent it will be shown as window label = QtWidgets.QLabel('Hello world!') label.show() # start the execution loop of the application sys.exit(app.exec_())
Make a simple GUI application in 3 easy steps.
Qt Creator, create a new project and make your design. Save your result as
.ui file (here:
2. Generate corresponding .py file
Now you can create a .py file from your .ui file that you generated in the previous step. Enter the following into your command line:
$ pyuic4 mainwindow.ui -o GUI.py
If the above line is run successfully a
GUI.py file is created.
3. Python codes
You can add your own code (e.g. signals and slots) in the
GUI.py file but it's better to add them in a new file. If you ever want to make changes to your GUI, the
GUI.py file will be overwritten. That's why using another file to add functionality is better in most cases.
Let's call the new file
from PyQt4 import QtGui import sys import GUI # Your generated .py file class MyApp(QtGui.QMainWindow, GUI.Ui_MainWindow): def __init__(self, parent=None): super(ExampleApp, self).__init__(parent) self.setupUi(self) # Connect a button to a function self.btn_run.clicked.connect(self.run) def run(self): # Write here what happens after the button press print("run") if __name__ == '__main__': app = QtGui.QApplication(sys.argv) form = ExampleApp() form.show() app.exec_()
Now you can run
main.py and see your GUI.