PyQt is a Python binding of the cross-platform GUI toolkit Qt. Applications built with PyQt 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. PyQt5 was released in 2016 and last updated in October 2021.

For a complete guide to desktop application development with Python & PyQt, see the PyQt5 tutorial and my PyQt5 book Create Simple GUI Applications with Python & Qt.

Explore PyQt

Showing articles for All (272) PyQt6 (99) PySide6 (5) PyQt5 (83) Streamlit (0) Tkinter (0) PySide2 (3) Kivy (0)

Create Applications with QtQuick in PyQt5

Build modern applications with declarative QML

Using QSettings to Save and Restore User Preferences in PyQt6

Build a settings dialog that persists user choices between application sessions

QTableView Align Currency Column Right with QStyledItemDelegate

Use Qt.TextAlignmentRole in your model's data() method to align columns in a QTableView

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

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

PyQt6 vs PySide6

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

How to run parallel process along with QProcess thread

Running background processes and file watching simultaneously in PyQt6 without blocking the GUI

How to Set Row Background Colors in a QTableView

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

Understanding setCurrentIndex() and Getting File Paths from QTreeView Selections

Why setCurrentIndex() returns None and how to properly work with selected indexes

Overriding acceptNavigationRequest in QWebEnginePage

Intercept link clicks in QWebEngineView and handle navigation yourself

QTableWidget for List of Dict

Display Python dictionaries in a Qt table using QAbstractTableModel

What happens after defining `app`, but before executing it?

Understanding the relationship between QApplication, widgets, and the event loop in PyQt6

Python PDF Report Generator

Generate custom PDF reports using reportlab & pdfrw with a PyQt/PySide GUI

Packaging PySide2 applications into a macOS app with PyInstaller

Turn your PySide2 application into a distributable macOS .app bundle

CSS Selector for widget Class

How to use Qt property selectors in stylesheets to target widgets by custom class

When will there be a new version of Creating GUI Applications for PyQt6 and PySide6?

Key migration changes from PyQt5/PySide2 to PyQt6/PySide6 and the updated book editions

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

Use QSortFilterProxyModel to add live filtering to your tables

Running Custom Functions in Background Threads with QThreadPool and QRunnable in PyQt6

How to run user-defined functions with arguments using QThreadPool and QRunnable in PyQt6

Displaying Tabular Data in PyQt6 ModelViews

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

How to Add Widgets After Loading a Qt Designer .ui File

Access layouts and add widgets programmatically to your Qt Designer interfaces

Creating Searchable Widget Dashboards in PyQt6

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

How to get/set the position of the scroll area?

Preserve scroll position and cursor location when updating text in QTextEdit

Packaging PyQt6 applications into a macOS app with PyInstaller

Turn your PyQt6 application into a distributable macOS app bundle

Using Qt Resource Files (.qrc) with PyInstaller and PyQt

How to include pyrcc5-compiled resources when packaging your PyQt application
1 2 3 4 5 6 7 8 9 10 11