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

Create Applications with QtQuick in PyQt5

Build modern applications with declarative QML

Drag & Drop TreeView Nodes to Reorder Items with a Custom Tree Model in PyQt5

Implement drag and drop reordering in QTreeView using a custom QAbstractItemModel

How to debug: QAbstractTableModel subclass does not call flags()

Understanding why flags() isn't called when using QDataWidgetMapper with standard widgets

How to Drag & Drop SVG Elements into a QGraphicsScene

Dragging and dropping SVG elements into a QGraphicsScene using QGraphicsSvgItem

Create a Settings window

Build a settings dialog with QDialog, QGroupBox, QRadioButton and QSettings in PyQt and PySide

How to Get the PyQt5 Version Number?

Find out which version of PyQt5 you're running

Sorting & filtering Qt Model Views

Using QSortFilterProxyModel to filter and sort data in PyQt5

Python PDF Report Generator

Generate custom PDF reports using reportlab & pdfrw with a PyQt/PySide GUI

How to Create a Filter/Search Bar for a QTableWidget in PyQt5

Use QSortFilterProxyModel to add live filtering to your tables

How to get/set the position of the scroll area?

Preserve scroll position and cursor location when updating text in QTextEdit

PyQt Windows Won't Reopen in Spyder — How to Fix It

Why your PyQt app only runs once in Spyder, and what you can do about it

Toggle & AnimatedToggle

Custom Toggle Switch Widget as a QCheckBox Replacement

How to set working directory of QProcess

Running external programs from different folders using QProcess in PyQt5

Plotting with Two Y-Axes in PyQtGraph

How to display two data series with independent Y-axes on a single plot

Animating Custom Widgets With QPropertyAnimation in PyQt5

Add dynamic visual effects and smooth animations to your custom PyQt5 widgets

How to Show Cursor Position in PyQtGraph Embedded in PyQt5

Add a crosshair overlay that tracks the mouse cursor on your PyQtGraph plots

Adding a Volume Meter to a PyQt5 Media Player

Use pydub and QMediaPlayer together to display real-time audio levels

How to Disable WebRTC in QWebEngineView with PyQt5

Control WebRTC settings and feature permissions in PyQt5's web engine

Opening links in a new window with QWebEngineView

Redirect links to a separate floating browser window

The QResource System in PyQt5

Using the QResource system to package additional data with your applications

Using QProcess to Run External Programs in PyQt5

Run background programs without impacting your UI

Fixing PyQt Redraw Issues on macOS

Solving display and rendering glitches when running PyQt applications on macOS

Authentication and Authorization with PyQt5 or PySide2

Secure your desktop applications with login flows, token-based auth, and role-based access control

Licensing Differences Between PyQt5 and PySide2

Understanding GPL, LGPL, and what they mean for your Python GUI projects
1 2 3 4 5 6