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

QTabWidget selected tab text blank

Fixing invisible tab labels on macOS with PyQt6

How to Change the Decimal Separator in QDoubleValidator

Use QLocale to control the decimal point format in PyQt6 QLineEdit validation

Launching PyQt apps in macOS at login

How to configure your PyQt application to start automatically when a user logs in on macOS

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

QTableWidget Crashes When Updating Every 1 Millisecond

Why modifying widgets from background threads causes crashes and how to fix it with signals

Why Widgets Appear as Separate Windows

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

setAlignment(QtCore.Qt.AlignCenter) method is not working as expected

Why calling setAlignment on a QStackedLayout doesn't center your widgets, and what to do instead

How to Use System Default Colors in Qt Stylesheets

Access your user's color scheme to keep your app looking native

Real Time Change of Widgets?

How to update the UI while in a loop

Fixing TypeError lambda() missing 1 required positional argument checked in Qt signals

Why connecting signals with lambda in PySide6 and PyQt6 can go wrong, and how to fix it

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

PyQt thread execution timeout in the background

Why time.sleep() takes longer than expected when your PyQt app is minimized on macOS, and how to fix it

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
1 2 3 4 5 6 7 8 9