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 (273) PyQt6 (105) PySide6 (5) PyQt5 (78) Streamlit (0) Tkinter (0) PySide2 (2) Kivy (0)

Fixing PyQt Redraw Issues on macOS

Solving display and rendering glitches when running PyQt applications on macOS

Size of Matplotlib's navigation toolbar (too large by default compared to the other widgets)

How to customize the size and appearance of the Matplotlib navigation toolbar in PyQt6/PySide6

Widget size and placement in the tabs of a QTabWidget

How to control widget positioning in tab layouts using addStretch

File Image Browser App with thumbnails

Build a thumbnail image browser in PyQt6 using model/view architecture

Authentication and Authorization with PyQt5 or PySide2

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

Authentication and Authorization with PyQt6 or PySide6

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

How to Center Icons in a QListWidget

Displaying icons centered in QListWidget items using PyQt6 or PySide6

PyQt thread execution timeout in the background

Why time.sleep() takes longer than expected when your PyQt app is minimized on macOS, and how to fix it

Styling PyQt/PySide Apps Installed via Pip on Linux

How to handle Qt styling and themes when distributing your Python GUI app through pip

Licensing Differences Between PyQt5 and PySide2

Understanding GPL, LGPL, and what they mean for your Python GUI projects

Licensing Differences Between PyQt6 and PySide6

Understanding GPL, LGPL, and what they mean for your Python GUI projects

Recommended way to install PyQt5 with fbs on macOS

Getting the right combination of Python, PyQt5, and PyInstaller for fbs on macOS

PyInstaller macOS issue with QCombobox not refreshing

Fixing widget redraw problems in PyQt5 apps packaged with PyInstaller on macOS

Solving Common PyInstaller Problems on macOS

How to fix file paths, reduce bundle sizes, and handle macOS-specific packaging issues

Optimizing paintEvent Performance in PyQt6 Custom Widgets

Avoid common pitfalls that cause high CPU usage when painting custom widgets

Can You Use Qt Creator Community Edition at Work?

Understanding the licensing rules for Qt Designer, PyQt and PySide in commercial and in-house settings

Programmatically select multiple rows in QTableView

Use QItemSelection and QItemSelectionModel to highlight multiple rows in a QTableView from code

Iterate through the contents of rows selected from a QTableView QSqlQueryModel

Learn how to retrieve and work with user-selected rows in a QTableView backed by a QSqlQueryModel

Pass multiple models to QListView

Combine worker state from multiple managers into a single Qt view

How to make QSplitter respond to double clicking?

Add double-click collapse and restore to QSplitter by creating a custom QSplitterHandle

PyQt5 MYSQL driver not loaded on Windows

How to fix the "QMYSQL driver not loaded" error when connecting to MySQL from PyQt5

Creating Dialogs With Qt Designer and PyQt5

Using the drag and drop editor to build PyQt5 dialogs

Updating PyQt6 Widgets from Functions and Classes

How to get data back into your labels and widgets instead of just printing to the console

QProcess.start() is deprecated, what are the alternatives?

Update how you launch subprocesses with arguments in PyQt5 & PySide2

Is it just me or is QMediaPlayer not working properly?

Fixing incorrect duration reporting and media file issues with QMediaPlayer on Windows
1 2 3 4 5 6 7 8 9 10 11