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

PyQt5 vs PyQt6

What are the differences, and is it time to upgrade?

Using Postgres with Qt & Python on Windows, fixing QPSQL driver not loaded

Setting PATH to use the Postgres library with PyQt5, PyQt6, PySide2 & PySide6

Packaging PyQt6 applications for Windows with PyInstaller & InstallForge

Turn your PyQt6 application into a distributable installer for Windows

Animating Custom Widgets With QPropertyAnimation in PyQt6

Add dynamic visual effects and smooth animations to your custom PyQt6 widgets

Add Scrollable Regions With QScrollArea in PyQt6

Run out of space in your GUI? Add a scrollable region to your application

Simple threading in PyQt/PySide apps with .start() of QThreadPool

How to move Python functions/methods & PyQt/PySide slots onto separate threads

Using QProcess to Run External Programs in PyQt6

Run background programs without impacting your UI

QComboBox

Drop-down selection widget

Search a QTableWidget and Select Matching Items

Finding and selecting matching items in a QTableWidget using findItems

Embedding Custom Widgets from Qt Designer in PyQt6

Learn how to use custom widgets in your PyQt6 applications when designing with Qt Designer

Creating Dialogs With Qt Designer and PyQt6

Using the drag and drop editor to build PyQt6 dialogs

Running Python script with QProcess after freeze

How to bundle and run external Python scripts from a frozen PyQt6 application

Creating Additional Windows in PyQt6

How to open, show, hide and toggle multiple windows in your PyQt6 application

How can I enable editing on a QTableView in PyQt6?

Modifying your model to allow editing of your data source

Why QTableView Row Deletion Only Works Once

Understanding how beginRemoveRows, endRemoveRows, and your underlying data work together in Qt model/view

Creating Custom GUI Widgets in PyQt6

Build a completely functional custom widget from scratch using QPainter

Rendering Radial Gradients in in PyQt6

How to fix the "Could not parse node: radialGradient" error when rendering SVGs in PyQt6

QPainter and Bitmap Graphics in PyQt6

Introduction to the core features of QPainter

The ModelView Architecture in PyQt6

Qt's MVC-like interface for displaying data in views

Actions in one thread changing data in another

How to communicate between threads and windows in PyQt6

GUI Freezing on Second Run with QThread

Why your PyQt worker thread stops responding after the first click, and how to fix it

Adding Pagination to QTableView in PyQt6

How to display large datasets page by page with navigation controls

How is QMdiArea supposed to be used?

Working with QMdiArea and QMdiSubWindow in PyQt6, including how to handle subwindow closing and visibility

Transmitting Extra Data With Qt Signals in PyQt6

Modifying widget signals to pass contextual information to slots

PyQt6 Toolbars & Menus — QAction

Defining toolbars, menus, and keyboard shortcuts with QAction
1 2 3 4 5 6 7 8