Vue d'ensemble
PyQt6 6.0, publié le 6 janvier 2021, est le binding Python pour Qt 6. Cette version majeure apporte des changements dans la gestion des énumérations et l'alignement avec la nouvelle architecture de Qt 6.
Fonctionnalités principales
Passage à Qt 6
PyQt6 s'appuie sur Qt 6 qui modernise le rendu graphique, supprime les modules obsolètes et améliore les performances. Les applications bénéficient du nouveau pipeline de rendu basé sur RHI (Rendering Hardware Interface).
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt6.QtCore import Qt
app = QApplication(sys.argv)
fenetre = QMainWindow()
fenetre.setWindowTitle('PyQt6 - Hello')
fenetre.setGeometry(100, 100, 400, 200)
label = QLabel('Bienvenue dans PyQt6 !', fenetre)
label.setAlignment(Qt.AlignmentFlag.AlignCenter)
fenetre.setCentralWidget(label)
fenetre.show()
sys.exit(app.exec())
Changements des énumérations
Les énumérations Qt doivent désormais être référencées avec leur nom complet (scoped enums). Par exemple, Qt.AlignCenter devient Qt.AlignmentFlag.AlignCenter. Ce changement améliore la clarté du code mais nécessite une migration.
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QSizePolicy
# PyQt5 : Qt.AlignCenter (non scopé)
# PyQt6 : Qt.AlignmentFlag.AlignCenter (scopé)
# Exemples de migration des enums
alignment = Qt.AlignmentFlag.AlignCenter
orientation = Qt.Orientation.Horizontal
key = Qt.Key.Key_Return
# Combinaison de flags avec l'opérateur |
align = (Qt.AlignmentFlag.AlignHCenter
| Qt.AlignmentFlag.AlignTop)
# SizePolicy également scopé
policy = QSizePolicy(
QSizePolicy.Policy.Expanding,
QSizePolicy.Policy.Fixed
)
