PyQt5 is a Python binding of the cross-platform GUI toolkit Qt. Applications built with PyQt5 will run on any platform supported by Qt & Python including Windows, OS X, Linux, iOS and Android.

Created by Riverbank Computing, PyQt is free software (GPL licensed) and has been in development since 1999. PyQt5 was released in 2016 and last updated in October 2021.

For a complete guide to desktop application development with Python & PyQt5, see the PyQt5 tutorial and PyQt5 book Create Simple GUI Applications with Python & Qt.

Explore PyQt5

PyQt5

Transmitting Extra Data With Qt Signals in PyQt5

Modifying widget signals to pass contextual information to slots

How to Reference the App Context from a Window in fbs ApplicationContext

Passing the ApplicationContext to your MainWindow when using fbs for PyQt5 packaging

Fixing "No such file or directory" for .ui Files When Using fbs freeze

Why your .ui file works with fbs run but breaks after freezing, and how to fix it

ModuleNotFoundError: No module named 'fbs_runtime'

How to fix the 'fbs_runtime' import error when running fbs projects outside of the fbs environment

Using Qt Designer .ui Files with fbs for PyQt5 Packaging

Load your Qt Designer interfaces directly in fbs-based applications without converting to Python

Why are signals defined as class variables?

Understanding why PyQt6 and PySide6 signals live on the class, not in __init__

Pause a running worker thread

Put a running task on hold, waiting for the UI

What does @pyqtSlot() do?

Is the pyqtSlot decorator even necessary?

How to Pass Additional Arguments to a QRunnable Worker Function

Solving common errors when passing parameters to threaded Worker functions in PyQt5

Why Omitting "if role == Qt.DisplayRole" Makes Your QAbstractTableModel Look Strange

Understanding Qt roles and why your table suddenly shows checkboxes, checkmarks, and filled squares

How to Add Custom Widgets to Qt Designer

Use widget promotion to integrate your own Python widgets into Qt Designer layouts

Customizing the Size of a PyQtGraph Plot

Control where and how large your PyQtGraph plots appear in your PyQt5 application

Plotting time series data with PyQtGraph

Display datetime data on PyQtGraph plot axes, including when using Qt Designer

PyQtGraph errors in Spyder/IPython

Fixing common PyQtGraph color, font size, and compatibility issues

Spyder IDE gets stuck when running PyQt5 applications

How to fix the frozen console and unresponsive window problem in Spyder

Writing for PyQt5 & PySide2

How to write code that works seamlessly with both PyQt5 and PySide2

PasswordEdit

Password editing field, with Show/Hide toggle

Implementing QPainter Flood Fill in PyQt5/PySide

Filling irregular regions in a QPainter canvas with Python

Packaging PyQt5 applications for Windows with PyInstaller & InstallForge

Turn your PyQt5 application into a distributable installer for Windows

Packaging PyQt5 applications for Linux with PyInstaller & fpm

Turn your PyQt5 application into installable Linux packages
1 2 3 4 5 6 7