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

How to Show Only Icons in QTableView Cells (Hide Text)

Use custom model roles to display icons without text in your PySide6 tables

System Tray & Mac Menu Bar Applications in PySide6

Add quick access functions to your apps

LearnPyQt — One year in, and much more to come.

A quick retrospective on 2019

No2Pads, a simple Notepad clone

The QTextEdit widget does 90% of the work

How to Restore the Window's Geometry in a PyQt6 App

Make Your Windows Remember Their Last Position and Size

Creating Dialogs With Qt Designer and PyQt6

Using the drag and drop editor to build PyQt6 dialogs

Using QProcess to Run External Programs in PyQt5

Run background programs without impacting your UI

Display Table with QTableWidget

How to display database query results in a PyQt6 table using QTableWidget

Introduction to the QGraphics Framework in PySide6

Creating vector interfaces using the QGraphics View framework

Introduction to the QGraphics Framework in PyQt6

Creating vector interfaces using the QGraphics View framework

Introduction to the QGraphics Framework in PyQt5

Creating vector interfaces using the QGraphics View framework

Introduction to the QGraphics Framework in PySide2

Creating vector interfaces using the QGraphics View framework

Creating Searchable Widget Dashboards in PySide2

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

Creating Searchable Widget Dashboards in PyQt5

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

Creating Searchable Widget Dashboards in PyQt6

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

Creating Searchable Widget Dashboards in PySide6

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

How to Populate a QComboBox from a CSV File in Python

Load data from CSV files and use it to fill QComboBox dropdown lists in your PyQt or PySide applications

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

PyQt6 & PySide6 Books Updated for 2024

Extended and updated with new examples and demos, including Model-View-Controller architecture

PyQt6, PySide6, PyQt5 and PySide2 Books — Updated for 2022

New 5th editions extended and updated with 780+ pages of Python GUI programming

Drag & Drop Widgets with PyQt5

Sort widgets visually with drag and drop in a container

How to Center Icons in a QListWidget

Displaying icons centered in QListWidget items using PyQt6 or PySide6

Why is Qt Creator used in the tutorial?

Understanding the difference between Qt Creator and Qt Designer

Avoid gray background for selected icons

Create a custom ToggleButton widget to replace QAction checkable icons without the default gray selection background

Building an Interactive Audio Editor with PyQtGraph and PyQt6

Use PyQtGraph's fast, interactive plotting to visualize audio waveforms and spectra in a PyQt6 application

Pause a running worker thread

Put a running task on hold, waiting for the UI

Save multiple plots to pdf

How to save multiple matplotlib plots to a single PDF file from a PyQt6 application

Calling value from model through pair of integers representing row and column

How to retrieve data from a Qt model using row and column integers

System Tray Icons Not Showing or Not Closing on Windows

Troubleshooting common issues with QSystemTrayIcon on Windows 10 and 11

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

QDataWidgetMapper with QSqlRelationalTableModel and QComboBoxes

How to correctly map relational database fields to combo boxes using QDataWidgetMapper

How to Use System Default Colors in Qt Stylesheets

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

Show and hide widgets in PyQt6

Understanding widget visibility and how parent-child relationships affect it

Removing Gaps Between Custom Widgets in PyQt6 Layouts

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

Which Python GUI library should you use?

Comparing the Python GUI libraries available in 2026

Plotting With PyQtGraph and PySide6

Create custom plots in PySide6 with PyQtGraph

Install Qt Designer Standalone

Qt Designer Download for Windows, Mac and Linux

Using QResource to Package Data Files With PyInstaller and PySide6

Serialize data files for easy packaging in Python

QPainter and Bitmap Graphics in PySide6

Introduction to the core features of QPainter

Creating your first app with PyQt6

A simple Hello World! application with Python and Qt6

Packaging Tkinter applications for Windows with PyInstaller & InstallForge

Turn your Tkinter application into a distributable installer for Windows

Customizing Your Tkinter App's Windows

Make Your Tkinter App's Windows Have Different Looks

Laying Out Your PySide2 GUIs With Qt Designer

Use Qt Designer to effortlessly build your application UI

Packaging PySide apps with fbs

Distribute cross-platform GUI applications with the fman Build System

Creating your first app with PySide6

A simple Hello World! application with Python and Qt

Creating your first app with PySide2

A simple Hello World! application with Python and Qt

Creating your first app with PyQt5

A simple Hello World! application with Python and Qt5

What does @pyqtSlot() do?

Is the pyqtSlot decorator even necessary?