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

QTableWidget for List of Dict

Display Python dictionaries in a Qt table using QAbstractTableModel

Python PDF Report Generator

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

When will there be a new version of Creating GUI Applications for PyQt6 and PySide6?

Key migration changes from PyQt5/PySide2 to PyQt6/PySide6 and the updated book editions

Running Custom Functions in Background Threads with QThreadPool and QRunnable in PyQt6

How to run user-defined functions with arguments using QThreadPool and QRunnable in PyQt6

Displaying Tabular Data in PyQt6 ModelViews

Create customized table views with conditional formatting, numpy and pandas data sources.

How to Add Widgets After Loading a Qt Designer .ui File

Access layouts and add widgets programmatically to your Qt Designer interfaces

Creating Searchable Widget Dashboards in PyQt6

Make dashboard UIs easier to use with widget search & text prediction

Packaging PyQt6 applications into a macOS app with PyInstaller

Turn your PyQt6 application into a distributable macOS app bundle

Install PyQt6 on Windows

Install PyQt6 on Windows 8, 10 & 11

Laying Out Your PyQt6 GUIs With Qt Designer

Use Qt Designer to effortlessly build your application UI

How to use "File->New" to create a new (duplicate) window of current form

Open multiple instances of the same window from your PyQt6 application

Plotting with Two Y-Axes in PyQtGraph

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

Why Widgets Appear as Separate Windows

Understanding widget parenting in Qt and how to fix widgets that float outside your main window

Widget size and placement in the tabs of a QTabWidget

How to control widget positioning in tab layouts using addStretch

Authentication and Authorization with PyQt6 or PySide6

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

Licensing Differences Between PyQt6 and PySide6

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

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

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

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 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

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

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

Impossible Translations

Troubleshooting PyQt6 translation loading issues with QTranslator
1 2 3 4 5