Porting Applications from PySide2 to PySide6¶
Module Availability¶
Qt for Python 6.0.0 initially ships with the essential Modules and some add-ons (Qt 3D, Qt Concurrent, Qt Help, Qt OpenGL, Qt Print Support Qt Quick Widgets, Qt SQL, Qt SVG, Qt UI Tools and Qt XML).
More modules will follow in subsequent releases as they are added to Qt.
For Qt for Python 6.1, Active Qt, Qt Charts, Qt Data Visualization, Qt StateMachine and Qt SCXML are planned.
Module-Level Changes¶
Qt Quick Controls 1 have been removed.
QStateMachine
and related classes have been extracted to a new QtStateMachine module.QXmlReader
and related classes (SAX API) have been removed.The content of the QtOpenGL module has been replaced. The class
QGLWidget
and related classes (QGLContext
,QGLFunctions
,QGLShaderProgram
) have been removed. Parts of the Open GL functionality from QtGui have been extracted into this module, for exampleQOpenGLBuffer
andQOpenGLShaderProgram
. There is a new module QtOpenGLWidgets which contains the classQOpenGLWidget
, a replacement forQGLWidget
.
As Open GL is phasing out, QRhi should be considered for graphics applications.
Imports¶
The first thing to do when porting applications is to replace the import statements:
from PySide2.QtWidgets import QApplication...
from PySide2 import QtCore
needs to be changed to:
from PySide6.QtWidgets import QApplication...
from PySide6 import QtCore
Some classes are in a different module now, for example
QAction
and QShortcut
have been moved from QtWidgets
to QtGui
.
For Qt Charts and Qt Data Visualization, the additional namespaces have been removed. It is now possible to use:
from PySide6.QtCharts import QChartView
directly.
Class/Function Deprecations¶
Then, the code base needs to be checked for usage of deprecated API and adapted accordingly. For example:
The High DPI scaling attributes
Qt.AA_EnableHighDpiScaling
,Qt.AA_DisableHighDpiScaling
andQt.AA_UseHighDpiPixmaps
are deprecated. High DPI is by default enabled in Qt 6 and cannot be turned off.
QDesktopWidget
has been removed.QScreen
should be used instead, which can be retrieved usingQWidget.screen()
,QGuiApplication.primaryScreen()
orQGuiApplication.screens()
.
QFontMetrics.width()
has been renamed tohorizontalAdvance()
.
QMouseEvent.pos()
andQMouseEvent.globalPos()
returning aQPoint
as well asQMouseEvent.x()
andQMouseEvent.y()
returningint
are now deprecated.QMouseEvent.position()
andQMouseEvent.globalPosition()
returning aQPointF
should be used instead.
Qt.MidButton
has been renamed toQt.MiddleButton
.
QOpenGLVersionFunctionsFactory.get()
instead ofQOpenGLContext.versionFunctions()
should be used to obtain Open GL functions.
QRegExp
has been replaced byQRegularExpression
.
QWidget.mapToGlobal()
andQWidget.mapFromGlobal()
now also accept and returnQPointF
.Functions named
exec_
(classesQCoreApplication
,QDialog
,QEventLoop
) have been renamed toexec
which became possible in Python 3.
More information can be found in the Porting to Qt 6 Guide and the Qt 6.0 Documentation .
© 2022 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.