Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6).
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Unified access to all major Qt modules that automatically import from the appropriate underlying binding. These modules provide the complete Qt API through a consistent interface regardless of which Qt binding (PyQt5/6, PySide2/6) is installed.
Essential Qt modules for application development, GUI, and system functionality.
import qtpy.QtCore
"""Core Qt functionality - signals, slots, events, threading, timers, etc."""
import qtpy.QtGui
"""GUI-related classes - painting, events, images, fonts, etc."""
import qtpy.QtWidgets
"""Widget classes for desktop applications"""
import qtpy.QtNetwork
"""Network programming classes"""
import qtpy.QtSql
"""Database integration classes"""
import qtpy.QtTest
"""Unit testing framework for Qt applications"""
import qtpy.QtConcurrent
"""High-level multithreading APIs"""
import qtpy.QtDBus
"""D-Bus IPC support (Unix/Linux systems)"""
import qtpy.QtHelp
"""Help system integration"""
import qtpy.QtXml
"""XML processing classes"""
import qtpy.QtXmlPatterns
"""XPath and XQuery support"""Usage example:
from qtpy.QtCore import QTimer, Signal, Slot
from qtpy.QtWidgets import QApplication, QWidget, QPushButton
from qtpy.QtGui import QPainter, QFont
from qtpy.QtNetwork import QNetworkAccessManager, QNetworkRequest
# All modules work consistently regardless of underlying binding
timer = QTimer()
app = QApplication([])
widget = QWidget()Modules for graphics rendering, multimedia, printing, and visualization.
import qtpy.QtOpenGL
"""OpenGL integration classes"""
import qtpy.QtOpenGLWidgets
"""OpenGL widget classes (Qt6)"""
import qtpy.QtSvg
"""SVG rendering support"""
import qtpy.QtSvgWidgets
"""SVG widget classes"""
import qtpy.QtPrintSupport
"""Printing support classes"""
import qtpy.QtMultimedia
"""Multimedia classes - audio, video, camera"""
import qtpy.QtMultimediaWidgets
"""Multimedia widget classes"""
import qtpy.Qt3DCore
"""3D graphics core functionality"""
import qtpy.Qt3DRender
"""3D rendering pipeline"""
import qtpy.Qt3DInput
"""3D input handling"""
import qtpy.Qt3DLogic
"""3D logic components"""
import qtpy.Qt3DExtras
"""3D convenience classes"""
import qtpy.Qt3DAnimation
"""3D animation framework"""
import qtpy.QtCharts
"""Chart and graph widgets"""
import qtpy.QtDataVisualization
"""3D data visualization"""Usage example:
from qtpy.QtOpenGL import QOpenGLWidget
from qtpy.QtMultimedia import QMediaPlayer
from qtpy.QtCharts import QChart, QChartView
# Graphics and multimedia functionality
opengl_widget = QOpenGLWidget()
media_player = QMediaPlayer()
chart = QChart()Web browser integration and QML/Quick UI framework modules.
import qtpy.QtWebEngine
"""Web browser engine integration"""
import qtpy.QtWebEngineCore
"""Web engine core functionality"""
import qtpy.QtWebEngineWidgets
"""Web engine widget classes"""
import qtpy.QtWebEngineQuick
"""Web engine QML integration"""
import qtpy.QtWebChannel
"""Web channel communication"""
import qtpy.QtWebSockets
"""WebSocket protocol support"""
import qtpy.QtQml
"""QML engine and runtime"""
import qtpy.QtQuick
"""Quick/QML UI framework"""
import qtpy.QtQuick3D
"""3D content for Qt Quick"""
import qtpy.QtQuickControls2
"""Quick Controls 2 components"""
import qtpy.QtQuickWidgets
"""Quick widget integration"""Usage example:
from qtpy.QtWebEngineWidgets import QWebEngineView
from qtpy.QtQml import QQmlApplicationEngine
from qtpy.QtQuickWidgets import QQuickWidget
# Web and QML functionality
web_view = QWebEngineView()
qml_engine = QQmlApplicationEngine()
quick_widget = QQuickWidget()Hardware interface and platform-specific functionality modules.
import qtpy.QtBluetooth
"""Bluetooth connectivity"""
import qtpy.QtNfc
"""Near Field Communication"""
import qtpy.QtSerialPort
"""Serial port communication"""
import qtpy.QtSensors
"""Hardware sensor access"""
import qtpy.QtPositioning
"""Positioning and location services"""
import qtpy.QtLocation
"""Maps and location-based services"""
import qtpy.QtNetworkAuth
"""Network authentication"""
import qtpy.QtTextToSpeech
"""Text-to-speech functionality"""Usage example:
from qtpy.QtSerialPort import QSerialPort
from qtpy.QtBluetooth import QBluetoothDeviceDiscoveryAgent
from qtpy.QtSensors import QAccelerometer
# Hardware interface functionality
serial_port = QSerialPort()
bluetooth_discovery = QBluetoothDeviceDiscoveryAgent()
accelerometer = QAccelerometer()Operating system specific functionality and integrations.
import qtpy.QtMacExtras
"""macOS-specific functionality"""
import qtpy.QtWinExtras
"""Windows-specific functionality"""
import qtpy.QtX11Extras
"""X11-specific functionality"""Usage example:
try:
from qtpy.QtMacExtras import QMacToolBar
# macOS specific code
except ImportError:
# Handle platform not supported
passModules for development tools, state machines, and inter-process communication.
import qtpy.QtDesigner
"""Qt Designer integration"""
import qtpy.QtUiTools
"""UI form loading at runtime"""
import qtpy.QtStateMachine
"""State machine framework"""
import qtpy.QtScxml
"""SCXML state machine support"""
import qtpy.QtRemoteObjects
"""Inter-process object sharing"""
import qtpy.QtAxContainer
"""ActiveX container support (Windows)"""PDF handling and third-party widget integration.
import qtpy.QtPdf
"""PDF document handling"""
import qtpy.QtPdfWidgets
"""PDF widget classes"""
import qtpy.Qsci
"""QScintilla text editor integration"""
import qtpy.QtPurchasing
"""In-app purchase functionality"""Access to underlying binding utilities for advanced use cases.
import qtpy.sip
"""SIP binding utilities (for PyQt)"""
import qtpy.shiboken
"""Shiboken binding utilities (for PySide)"""All Qt modules follow consistent import patterns regardless of the underlying binding:
# Import entire module
from qtpy import QtCore, QtWidgets, QtGui
# Import specific classes
from qtpy.QtCore import QObject, QTimer, Signal, Slot
from qtpy.QtWidgets import QApplication, QWidget, QVBoxLayout
from qtpy.QtGui import QPixmap, QIcon, QFont
# Access module constants and enums
from qtpy.QtCore import Qt
print(Qt.AlignCenter) # Works across all bindings
# All imports work identically regardless of PyQt5/6 or PySide2/6QtPy normalizes signal and slot syntax across bindings:
from qtpy.QtCore import Signal, Slot, QObject
class MyClass(QObject):
# Signal definition (consistent across bindings)
my_signal = Signal(int, str)
@Slot()
def my_slot(self):
"""Slot definition (consistent across bindings)"""
pass
# Property definition
from qtpy.QtCore import Property
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self._value = 0
@Property(int)
def value(self):
return self._valueQtPy handles enum access differences between Qt bindings:
from qtpy.QtCore import Qt
from qtpy.QtWidgets import QWidget
# Enum access works consistently
widget = QWidget()
widget.setAlignment(Qt.AlignCenter)
widget.setWindowFlag(Qt.WindowStaysOnTopHint)
# Works with both scoped (Qt6) and unscoped (Qt5) enum accessInstall with Tessl CLI
npx tessl i tessl/pypi-qtpy