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

Sorting and Filtering a QTableView with QSortFilterProxyModel

Learn how to add interactive sorting and filtering to your PyQt/PySide table views without touching your underlying data

PyQt6 & PySide6 Books Updated for 2024

Extended and updated with new examples and demos, including Model-View-Controller architecture

How to Restore the Window's Geometry in a PyQt5 App

Make Your Windows Remember Their Last Geometry

How to Create a Custom Title Bar for a PyQt5 Window

Customize Your Python App's Title Bars

Install Qt Designer Standalone

Qt Designer Download for Windows, Mac and Linux

PyQt6, PySide6, PyQt5 and PySide2 Books — Updated for 2022

New 5th editions extended and updated with 780+ pages of Python GUI programming

PyQt5 vs PyQt6

What are the differences, and is it time to upgrade?

Using Postgres with Qt & Python on Windows, fixing QPSQL driver not loaded

Setting PATH to use the Postgres library with PyQt5, PyQt6, PySide2 & PySide6

Drag & Drop Widgets with PyQt5

Sort widgets visually with drag and drop in a container

Simple threading in PyQt/PySide apps with .start() of QThreadPool

How to move Python functions/methods & PyQt/PySide slots onto separate threads

How to show a custom cursor on a PyQtGraph plot?

Changing the OS cursor and implementing a custom crosshair

Introduction to the QGraphics Framework in PyQt5

Creating vector interfaces using the QGraphics View framework

How can I enable editing on a QTableView in PyQt5?

Modifying your model to allow editing of your data source

Editing QTableView cells

Allowing users to update the data in a model view

Bluetooth Device Scanning with PyQt5 QtBluetooth

How to discover Bluetooth and Bluetooth Low Energy devices using PyQt5's QtBluetooth module

Writing a PyQt5 Plugin in QGIS — Reading a ComboBox Value

How to check which item a user selected in a QComboBox and run different code depending on the choice

Raspberry Pi 4 QMediaPlayer Audio Output via Analog Jack

Getting PyQt5 QMediaPlayer audio to play through the 3.5mm headphone jack on Raspberry Pi

Animations and Transformations With QtQuick in PyQt5

Building an animated analog clock in QML with image rotations and spring animations

Avoid gray background for selected icons

Create a custom ToggleButton widget to replace QAction checkable icons without the default gray selection background

Displaying NumPy Arrays and Pandas Data in QTableView Cells

How to handle complex data like NumPy arrays and Pandas Series inside a QAbstractTableModel

How to Show Only Icons in QTableView Cells (Hide Text)

Use custom model roles to display icons without text in your PyQt5 tables
1 2 3 4 5 6 7