CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-qtpy

Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6).

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

qt-modules.mddocs/

Qt Module Wrappers

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.

Capabilities

Core Qt Modules

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()

Graphics and Multimedia Modules

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 and Quick Modules

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()

Platform and Hardware Modules

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()

Platform-Specific Modules

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
    pass

Development and Tool Modules

Modules 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)"""

Document and Third-party Modules

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"""

Low-level Binding Modules

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)"""

Module Import Patterns

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/6

Signal and Slot Compatibility

QtPy 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._value

Qt Enum Access

QtPy 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 access

Install with Tessl CLI

npx tessl i tessl/pypi-qtpy

docs

compatibility.md

core-package.md

development-tools.md

index.md

qt-modules.md

uic-module.md

tile.json