PyQt6 is a Python binding of the cross-platform GUI toolkit Qt. Applications built with PyQt6 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. The latest version PyQt6 was released in 2021 and the library continues to be updated.

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

Explore PyQt6

PyQt6

QWebEngineView change anchor behavior

How to intercept link clicks in QWebEngineView and open them in a new window or the system browser

Use mouse drag to change the width of a rectangle in PyQt6

Build a resizable rectangle widget with draggable edges, like a crop tool

Retrieve underlying data object from QAbstractTableModel

How to get the original Python object back from a selected row in a QTableView

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 PyQt6 or PySide6

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

Using concurrent.futures with PyQt6 for Long-Running Tasks

Keep your GUI responsive while fetching data from multiple APIs using Python's concurrent.futures

Understanding Python Instance Variables in PyQt6 Classes

Why self matters when storing data in your GUI applications

How to Center Icons in a QListWidget

Displaying icons centered in QListWidget items using PyQt6 or PySide6

Licensing Differences Between PyQt6 and PySide6

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

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

Reloading UI Changes in PyQt6 Without Restarting PyCharm

How to see your Qt Designer changes immediately during development

Adding QTabWidget to a Layout Alongside Other Widgets in PyQt6

How to combine QTabWidget with other layouts without it taking over your entire window

Clean up on exit — Stopping threads when closing a PyQt6 application

How to properly shut down background threads and workers when your application window is closed

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 Search a QTableWidget and Highlight Results in PyQt6

Use findItems() to search through your table data and jump to matching results

Plotting Binary File Data with Matplotlib in PyQt6

Load binary files and plot them interactively using Matplotlib and PyQt6

Image inserted in label using Qt Designer does not load from Python

How to compile and use Qt resource files so images appear in your application

Updating PyQt6 Widgets from Functions and Classes

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

How to compile PyQt6 or PySide6 code with Nuitka

Convert your Python Qt applications to fast native executables using the Nuitka compiler
1 2 3 4 5 6 7 8