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

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

How to Build a Scheduling App Layout with Qt Designer and PyQt6

Plan and design a scheduling application using Qt Designer, QTableView, and model/view architecture

How to display a loading animated gif while a code is executing in backend of my Python Qt6 UI?

Use QThreadPool and QMovie to show a loading animation without freezing your PyQt6 interface

Icons Not Showing in PyQt6 or PySide6 Toolbar

Why your toolbar icons might be missing and how to fix the file path

Save multiple plots to pdf

How to save multiple matplotlib plots to a single PDF file from a PyQt6 application

How to Find What Data a Signal Sends in PyQt6 and PySide6

Understanding signal signatures and how to look them up in the Qt documentation

Tracking Thread Pool Duration in PyQt6

How to measure and display total execution time across multiple workers in QThreadPool

Show and hide widgets in PyQt6

Understanding widget visibility and how parent-child relationships affect it

Troubles with loading data when running from my IDE

Why icons, images, and databases fail to load when you run your PyQt app from VS Code

Multi-Threading Do's and Don'ts

Practical guidelines for working with threads, timers, and signals in PyQt6

QSqlTableModel canFetchMore — Loading All Rows from Your Database

Why QSqlTableModel only shows 256 rows and how to fetch everything

QTableWidget: How to remove subsequent rows on new row insert?

Managing chess move history in a QTableWidget with row insertion and deletion

Fixing Missing Icons in PyInstaller-Packaged PyQt6 Applications on Windows

Why your app icon disappears after packaging and how to fix it

Understanding Python Keyword Unpacking with QThreadPool Progress Callbacks in PyQt6

How **kwargs connects progress signals to worker functions in PyQt6 multithreading
1 2 3 4 5 6 7 8 9