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

First Steps With Qt Designer and PyQt6

Use Qt Designer's drag and drop interface to design your PyQt6 GUI

Removing Gaps Between Custom Widgets in PyQt6 Layouts

Use size policies and size hints to control how custom-painted widgets fit together

How to Clear and Refresh ComboBox Delegate Data in QTableView

Keep your QTableView ComboBox delegates in sync when your underlying data changes

Adding QComboBox to a QTableView and getting/setting values after creation

Use QItemDelegate to embed combo boxes in your table views, with per-row data and value tracking

PyQt6 Book Now Available: Create GUI Applications with Python & Qt6

The hands-on guide to building desktop apps with Python and Qt6

Deploying PyQt6 Apps on macOS with py2app

How to package your PyQt6 application into a standalone macOS .app bundle

Passing Arguments to Threaded Functions in PyQt6

Understanding the difference between passing a function and calling a function when using QThreadPool and QRunnable

Sequential programming, threads, causality, and the nature of time

Why updating the GUI before a long-running task doesn't work the way you'd expect

Create Applications with QtQuick in PyQt6

Build modern applications with declarative QML

Using QSettings to Save and Restore User Preferences in PyQt6

Build a settings dialog that persists user choices between application sessions

QTableView Align Currency Column Right with QStyledItemDelegate

Use Qt.TextAlignmentRole in your model's data() method to align columns in a QTableView

Drag & Drop TreeView Nodes to Reorder Items with a Custom Tree Model in PyQt6

Implement drag and drop reordering in QTreeView using a custom QAbstractItemModel

How to Drag & Drop SVG Elements into a QGraphicsScene

Dragging and dropping SVG elements into a QGraphicsScene using QGraphicsSvgItem

Implementing "Open With" Context Menus in PyQt6

Query your Linux desktop for available applications and let users choose how to open files

Custom style for menu items

How to use QWidgetAction to create menu items with custom background colors in PyQt6

Create a Settings window

Build a settings dialog with QDialog, QGroupBox, QRadioButton and QSettings in PyQt and PySide

How to Get the PyQt6 Version Number?

Find out which version of PyQt6 you're running

What modules are missing from PySide6 & PyQt6?

The Qt extension modules not yet available in Qt 6.1

PyQt6 vs PySide6

What's the difference between the two Python Qt libraries? ...and what's exactly the same (most of it)

How to run parallel process along with QProcess thread

Running background processes and file watching simultaneously in PyQt6 without blocking the GUI

How to Set Row Background Colors in a QTableView

Use Qt's BackgroundRole to color entire rows based on your data

Understanding setCurrentIndex() and Getting File Paths from QTreeView Selections

Why setCurrentIndex() returns None and how to properly work with selected indexes

Why treeView.selectedIndexes() Returns Duplicate Items in PyQt6

Understanding multi-column selections in QTreeView and how to handle them
1 2 3 4 5 6 7 8 9