Changelog

We're regularly updating the site with new tutorials, updates and corrections with the support of the Python community.

Found something wrong? Send Feedback & Corrections

How to compile PyQt6 or PySide6 code with Nuitka

Convert your Python Qt applications to fast native executables using the Nuitka compiler

Transmitting Extra Data With Qt Signals in PySide6

Modifying widget signals to pass contextual information to slots

QPainter and Bitmap Graphics in PyQt6

Introduction to the core features of QPainter

QPainter and Bitmap Graphics in PySide2

Introduction to the core features of QPainter

QPainter and Bitmap Graphics in PySide6

Introduction to the core features of QPainter

Transmitting Extra Data With Qt Signals in PyQt6

Modifying widget signals to pass contextual information to slots

Transmitting Extra Data With Qt Signals in PySide2

Modifying widget signals to pass contextual information to slots

Transmitting Extra Data With Qt Signals in PyQt5

Modifying widget signals to pass contextual information to slots

QPainter and Bitmap Graphics in PyQt5

Introduction to the core features of QPainter

Plotting With PyQtGraph and PySide6

Create custom plots in PySide6 with PyQtGraph

Animating Custom Widgets With QPropertyAnimation in PyQt6

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

Animating Custom Widgets With QPropertyAnimation in PySide2

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

Animating Custom Widgets With QPropertyAnimation in PySide6

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

Creating Custom GUI Widgets in PyQt6

Build a completely functional custom widget from scratch using QPainter

Creating Custom GUI Widgets in PySide6

Build a completely functional custom widget from scratch using QPainter

Animating Custom Widgets With QPropertyAnimation in PyQt5

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

Plotting With PyQtGraph and PySide2

Create custom plots in PySide with PyQtGraph

Creating Custom GUI Widgets in PySide2

Build a completely functional custom widget from scratch using QPainter

Creating Custom GUI Widgets in PyQt5

Build a completely functional custom widget from scratch using QPainter

Multithreading PyQt6 applications with QThreadPool

Run background tasks concurrently without impacting your UI

Multithreading PySide6 applications with QThreadPool

Run background tasks concurrently without impacting your UI

Multithreading PySide2 applications with QThreadPool

Run background tasks concurrently without impacting your UI

Multithreading PyQt5 applications with QThreadPool

Run background tasks concurrently without impacting your UI

Creating Dialogs With Qt Designer and PySide6

Using the drag and drop editor to build PySide6 dialogs

Creating Dialogs With Qt Designer and PyQt6

Using the drag and drop editor to build PyQt6 dialogs

Creating Dialogs With Qt Designer and PySide2

Using the drag and drop editor to build PySide2 dialogs

Creating Dialogs With Qt Designer and PyQt5

Using the drag and drop editor to build PyQt5 dialogs

Toggle & AnimatedToggle

Custom Toggle Switch Widget as a QCheckBox Replacement

Implementing QPainter Flood Fill in PyQt5/PySide

Filling irregular regions in a QPainter canvas with Python

How to Set Row Background Colors in a QTableView

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

GUI Freezing on Second Run with QThread

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

Simultaneous scaling ViewBox elements

How to synchronize axis scaling across multiple PyQtGraph plots

Understanding .parent() vs. Parent Class in PyQt6 Custom Widgets

Why self.parent() doesn't mean what you think it means

Laying Out Your PyQt5 GUIs With Qt Designer

Use Qt Designer to effortlessly build your application UI

System Tray & Mac Menu Bar Applications in PySide6

Add quick access functions to your apps

Authentication and Authorization with PyQt6 or PySide6

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

PyQt6 vs PySide6

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

Which Python GUI library should you use?

Comparing the Python GUI libraries available in 2026

Fixing Missing Icons in PyInstaller-Packaged PyQt6 Applications on Windows

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

System Tray & Mac Menu Bar Applications in PySide2

Build system tray and menu bar apps with PySide2 and Qt

6th Edition - Create GUI Applications with Python & Qt, Released

PyQt6 & PySide6 books updated for 2025 with model view controller architecture, new Python/Qt features and more examples

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

How to Add Custom Widgets to Qt Designer

Use widget promotion to integrate your own Python widgets into Qt Designer layouts

Is it possible to access system env vars in Qt?

Reading sourced Bash environment variables from your Python Qt application

Embedding External Programs and Terminals in PyQt5 Widgets

Approaches to embedding terminals and external applications inside your PyQt5 or PySide2 GUI

No2Pads, a simple Notepad clone

The QTextEdit widget does 90% of the work

PyQt6 Widgets

Using QPushButton, QCheckBox, QComboBox, QLabel and QSlider widgets

First Steps With Qt Designer and PySide6

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

Sorting and Filtering a QTableView with QSortFilterProxyModel

Learn how to add interactive sorting and filtering to your PyQt/PySide table views without touching your underlying data