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

Displaying Tabular Data in PySide6 ModelViews

Create customized table views with conditional formatting, numpy and pandas data sources.

PyInstaller macOS issue with QCombobox not refreshing

Fixing widget redraw problems in PyQt5 apps packaged with PyInstaller on macOS

How can I enable editing on a QTableView in PySide6?

Modifying your model to allow editing of your data source

How can I enable editing on a QTableView in PyQt6?

Modifying your model to allow editing of your data source

How Do I Display Images in PySide6?

Using QLabel and QPixmap to easily add images to your applications

How Do I Display Images in PyQt6?

Using QLabel and QPixmap to easily add images to your applications

Why do I need to pass sys.argv or [] when creating an instance of QApplication?

Using command-line arguments to configure Qt

How to show a custom cursor on a PyQtGraph plot?

Changing the OS cursor and implementing a custom crosshair

How to fix widgets appearing as separate windows?

Understanding Qt parents and layouts and the effect on widget position

How can I enable editing on a QTableView in PyQt5?

Modifying your model to allow editing of your data source

Actions in one thread changing data in another

How to communicate between threads and windows in PyQt6

QProcess.start() is deprecated, what are the alternatives?

Update how you launch subprocesses with arguments in PyQt5 & PySide2

How do I display an Image in PySide2?

Using QLabel and QPixmap to easily add images to your PySide2 applications

Are there any built-in QIcons?

Using built-in icons for your apps.

How do I display an Image in PyQt5?

Using QLabel and QPixmap to easily add images to your applications

Using QThreadPool.start() with a Simple Function in PySide6

Run background tasks without creating a QRunnable by passing a callable directly to QThreadPool

Running Python script with QProcess after freeze

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

Why QTableView Row Deletion Only Works Once

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

How to refresh a QTreeView in PyQt?

Updating the displayed directory in a QTreeView with QFileSystemModel

QWidget::setLayout: Attempting to set QLayout on a widget which already has a layout

Understanding why calling setLayout() twice causes an error, and how to structure your layouts correctly

Fixing inotify_add_watch errors when deleting files with QFileSystemModel

Why Qt's file watcher complains about deleted directories and how to handle it

Navigating QSqlTableModel and QTableView in very large databases

Working with large datasets in Qt's SQL table views, handling pagination, filtering, and record navigation

Create a Settings window

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

How to Get the PyQt5 Version Number?

Find out which version of PyQt5 you're running

How to Get the PySide2 Version Number?

Find out which version of PySide2 you're running

How to Get the PySide6 Version Number?

Find out which version of PySide6 you're running

How to Create a Filter/Search Bar for a QTableWidget in PyQt5

Use QSortFilterProxyModel to add live filtering to your tables

PyQt Windows Won't Reopen in Spyder — How to Fix It

Why your PyQt app only runs once in Spyder, and what you can do about it

Fixing PyQt Redraw Issues on macOS

Solving display and rendering glitches when running PyQt applications on macOS

Authentication and Authorization with PyQt6 or PySide6

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

Styling PyQt/PySide Apps Installed via Pip on Linux

How to handle Qt styling and themes when distributing your Python GUI app through pip

Saving and Restoring Application Settings with QSettings in PyQt5

Learn how to use QSettings to remember user preferences, window sizes, and configuration options between sessions

How to display a loading animated gif while a code is executing in backend of my Python Qt5 UI?

Use QThreadPool and QMovie to show a loading animation without freezing your PyQt5 interface

Icons Not Showing in PyQt6 or PySide6 Toolbar

Why your toolbar icons might be missing and how to fix the file path

Exporting Widgets to PDF and Controlling Position in PyQt5

How to render a QWidget to PDF and position it at the top of the page

Setting Window Icons in PyQt5 Apps Packaged with PyInstaller

How to bundle and display icons correctly in your packaged PyQt5 applications

How to Show a QMenu Title in PyQt6

Adding visible titles to your context menus using QLabel, QWidgetAction, and other approaches

QDialog blocking main thread?

Understanding why QDialog.exec() blocks your application and how to fix it

Elegant shutdown of running threads

How to gracefully shut down QThreadPool workers when closing your PyQt application

PyQtGraph plotting over time

Updating plots in real time with PyQtGraph and PyQt6

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

A quick retrospective on 2019

Packaging PyQt5 apps with fbs

Distribute cross-platform GUI applications with the fman Build System

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

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

Adding Pagination to QTableView in PyQt6

How to display large datasets page by page with navigation controls

Passing Arguments to Threaded Functions in PyQt6

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

How to debug: QAbstractTableModel subclass does not call flags()

Understanding why flags() isn't called when using QDataWidgetMapper with standard widgets

How to Get the PyQt6 Version Number?

Find out which version of PyQt6 you're running

QTableWidget for List of Dict

Display Python dictionaries in a Qt table using QAbstractTableModel

QTreeView with QAbstractItemModel in PyQt6

Build hierarchical tree displays using custom models