Qt for Python: the 6.4 release and the future of the project


Dr. Cristiรกn Maureira-Fredes @cmaureir

Slides ๐Ÿ—Ž

qtinfo.dev/gnuhealthcon22

Where were we? ๐Ÿค”

GNUHealthCon 2021 (1/2)

GNUHealthCon 2021 (2/2)

Motivation

  • Python popularity ๐Ÿš€
  • Relevance of C++ ๐Ÿค

Features

  • snake_case, and true_property
  • Improved QML story
  • Opaque containers
  • ...and more!

Many things have changed
in the last year

Both in C++ and Python

What's new in Qt/C++ 6.4? (1/4)

New and Renewed Modules

  • iOS Style for Qt Quick (TP)
  • Qt HTTP Server (TP)
  • Qt Quick 3D Physics (TP)
  • Qt TextToSpeech

What's new in Qt/C++ 6.4? (2/4)

New functionality

  • Qt Quick 3D
  • Qt Quick Item Views
  • Smoother animations in Qt Quick
  • QQuickWidget with full RHI support
  • QSslServer, QtMultimedia

What's new in Qt/C++ 6.4? (3/4)

WebAssembly

  • no longer TP!
  • near-native performance, rich UI, 3D, Quick
  • heavy data processing and demanding viz

What's new in Qt/C++ 6.4? (4/4)

...also

  • New Qt Widgets features
  • better types and tooling in QML
  • String literals, Markdown in QTextDocuments

What's new in Qt/Python 6.4?

Catching up with Qt and C++ (1/3)

Catching up with Qt and C++ and Python! (2/3)

Catching up with Qt and C++ and Python! (3/3)

  • New Qt modules, API changes, format, etc. โœ…
  • New C++ features, or requested functionality ๐ŸŽ
  • Python releases and deprecated API (3.7+) ๐Ÿ

But not only Python (1/2)

But not only Python (2/2)

  • 3.9 compatibility
  • wheels on PyPi ๐ŸŽ‰

Wheel structure (1/3)

Modules in the PySide wheel

QtCore, QtGui, QtWidgets, QtHelp, QtNetwork, QtConcurrent, QtDBus, QtDesigner, QtOpenGL, QtOpenGLWidgets, QtPrintSupport, QtQml, QtQuick, QtQuickControls2, QtQuickWidgets, QtXml, QtTest, QtSql, QtSvg, QtSvgWidgets, QtUiTools, Qt3DAnimation, Qt3DCore, Qt3DExtras, Qt3DInput, Qt3DLogic, Qt3DRender, QtAxContainer, QtBluetooth, QtCharts, QtDataVisualization, QtMultimedia, QtMultimediaWidgets, QtNetworkAuth, QtNfc, QtPositioning, QtQuick3D, QtRemoteObjects, QtScxml, QtSensors, QtSerialPort, QtStateMachine, QtVirtualKeyboard, QtWebChannel, QtWebEngineCore, QtWebEngineQuick, QtWebEngineWidgets, QtWebSockets

Wheel structure (2/3)

  • shiboken6
  • shiboken6-generator
  • pyside6-essentials
    • QtCore, QtGui, QtWidgets, QtHelp, QtNetwork, QtConcurrent, QtDBus, QtDesigner, QtOpenGL, QtOpenGLWidgets, QtPrintSupport, QtQml, QtQuick, QtQuickControls2, QtQuickWidgets, QtXml, QtTest, QtSql, QtSvg, QtSvgWidgets, QtUiTools,
  • pyside6-addons
    • Qt3DAnimation, Qt3DCore, Qt3DExtras, Qt3DInput, Qt3DLogic, Qt3DRender, QtAxContainer, QtBluetooth, QtCharts, QtDataVisualization, QtMultimedia, QtMultimediaWidgets, QtNetworkAuth, QtNfc, QtPositioning, QtQuick3D, QtRemoteObjects, QtScxml, QtSensors, QtSerialPort, QtStateMachine, QtVirtualKeyboard, QtWebChannel, QtWebEngineCore, QtWebEngineQuick, QtWebEngineWidgets, QtWebSockets

Wheel structure (3/3)


        $ pip install pyside6  # still does the job!
        # shiboken6, pyside6-essentials, pyside6-addons
        # will be installed
        

        $ pip install pyside6-essentials  # is valid as well
        # shiboken6, pyside6-essentials
        # will be installed
        

Also the build internals!

Embedded support (1/2)

  • Research on 6.3 ๐Ÿ•ต๏ธ
  • No Qt in some OS ๐Ÿ˜“
  • Focused on Raspberry Pi

Embedded support (2/2)

  • Yocto support WIP
  • CI Automation
  • Debian Packaging story

Tooling (1/4)

pyside6-qml

Tooling (2/4)

pyside6-deploy

Tooling (3/4)

pyside6-project

Tooling (4/4)

pyside6-qtpy2cpp

What about the future? ๐Ÿ”ฎ

Asynchronous compatibility

Embedded wheels

WebAssembly

Android

Let's be in touch!

Communication channels

More platforms at wiki.qt.io/Qt_for_Python#Community

Don't forget the documentation

Qt for Python: the 6.4 release and the future of the project


Dr. Cristiรกn Maureira-Fredes @cmaureir