PyQt is a Python binding of the cross-platform GUI toolkit Qt. Applications built with PyQt 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 & PyQt, see the PyQt5 tutorial and my PyQt5 book Create Simple GUI Applications with Python & Qt.

Explore PyQt

Showing articles for All (278) PyQt6 (89) PySide6 (5) PyQt5 (97) Streamlit (0) Tkinter (0) PySide2 (3) Kivy (0)

Opening a subwindow from a button event

How to open a second window from a button click using PyQt6 and Qt Designer .ui files

Packaged installer file sizes for PyQt apps

Understanding and reducing the size of Python GUI application installers

QDialog blocking main thread?

Understanding why QDialog.exec() blocks your application and how to fix it

QWebEngine in Qt Designer

How to use QWebEngineView and other custom widgets in your Qt Designer layouts

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__

Clearing the canvas in QPainter

Fix the common black background issue when painting on a QPixmap in PyQt6

Elegant shutdown of running threads

How to gracefully shut down QThreadPool workers when closing your PyQt application

How to start/stop or pause running threads?

Control QRunnable workers in PyQt6 with start, stop, and pause functionality

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?

Understanding QPainter Coordinates in PyQt6

How the coordinate system works for drawing on canvases in PyQt6

How to Pass Additional Arguments to a QRunnable Worker Function

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

Resizing the QPainter canvas

How to make a QLabel drawing canvas resize with the window

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 Check if a QLineEdit is Empty in Python

Empty strings are falsey in Python

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

ModelView Autoselection

How to automatically select items in a QListView using setCurrentIndex and QModelIndex

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

Fixing "No module named plotwidget" when using PyQtGraph with Qt Designer

How to correctly promote a widget to PyQtGraph's PlotWidget in your .ui files
1 2 3 4 5 6 7 8 9 10 11