Cross-Plattform: Qt for Python 6.1 schlängelt zu Qt Designer und Qt Charts

Neben einer erweiterten Anbindung an das Charts-Modul und das Designtool ergänzt das Release fehlende Module und lässt sich mit dem Nuitka-Compiler verwenden.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Schlange, Python, Paradies

(Bild: Michael Schwarzenberger, gemeinfrei (Creative Commons CC0))

Lesezeit: 3 Min.
Inhaltsverzeichnis

Eine Woche nach der Veröffentlichung von Qt 6.1 zieht das Python-Team der Qt-Company nach und aktualisiert Qt for Python 6.1. Das Projekt PySide für das Erstellen von Qt-Anwendungen mit Python ergänzt in Version 6 fehlende Module und bringt eine erweiterte Anbindung an Qt Charts für das Zusammenspiel mit NumPy. Nennenswert ist zudem die Interaktion mit Qt Designer und der optionale Einsatz des Compilers Nuitka.

Außerdem hat das Team Feinschliff bei der in Qt for Python 6.0 eingeführten Verwendung von Snake Case statt Camel Case zum Ansprechen der Qt-APIs vorgenommen. Erstere Schreibweise hat Binnenversalien, um einzelne Wörter zu trennen wie in meineKlasse, während bei Snake Case die Wörter durch einen Unterstrich als meine_klasse getrennt sind. Zum Umschalten dient die Option __feature__. Offensichtlich gab es einzelne Ausnahmefälle, die zu Problemen führten, die nun behoben sein sollen. Darüber hinaus ist im aktuellen Release aufgrund der weggefallenen Anbindung an das veraltete Python 2 exec_() als Workaround für exec überflüssig.

Das Release bringt die in Qt 6.1 portierten und erweiterten Module mit. Außerdem entfallen für die Visualisierungs-Libraries Qt Charts und Qt Data Visualization die bisherigen individuellen Namespaces.

Dank der entfallenen Namensräume ist Code, der auf Qt Charts setzt, übersichtlicher und konsistent zum Einsatz anderer Module.

(Bild: Qt Company)

Für Qt Charts bringt das Release zudem drei zusätzliche Methoden für das Zusammenspiel mit der Python-Library NumPy mit:

  • QXYSeries.appendNp(PyArrayObject*, PyArrayObject*)
  • QXYSeries.replaceNp(PyArrayObject*, PyArrayObject*)
  • QPainter.drawPointsNp(PyArrayObject*, PyArrayObject*)

Die Parameter sind kompatibel zu NumPy-Arrays. Allerdings sind die Methoden derzeit noch als experimentell gekennzeichnet, und es existiert keine Konfiguration oder Kommandozeilenparameter, um sie zu aktivieren. Wer sie bereits verwenden möchte, muss PySide manuell kompilieren.

Ebenfalls als experimentell gekennzeichnet ist die Interaktion mit Qt Designer, dem Werkzeug zum Erstellen grafischer Oberflächen mit Qt Widgets. Das Erstellen eigener Widgets in Python erfordert weniger Handarbeit als die Qt-Chart-Ergänzung: Zumindest unter Linux und Windows ist lediglich die Installation eines Plug-ins erforderlich. Für den Einsatz unter macOS sind zusätzliche Anpassungen erforderlich.

Mehr Infos

Am 23. Juni findet die betterCode() Qt 2021 statt, eine Online-Konferenz zu Qt 6. Im Fokus stehen zum einen die Neuerungen der Hauptversionen und zum anderen der mitunter steile Migrationspfad. Die Vorträge sollen unter anderem bei der Entscheidung helfen, wie und wann eine Migration von Qt-5-Projekten auf die neue Hauptversion sinnvoll ist.

Die Keynote hält der Chief Maintainer des Qt-Projekts und CTO der Qt Company Lars Knoll. Er wird über die Ziele bei der Entwicklung von Qt 6 berichten und einen Ausblick auf die Releases ab Qt 6.2 geben.

Für eigene Widgets ist zunächst eine Datei mit der Namenskonvention registerX.py erforderlich, wobei Entwicklerinnen und Entwickler X durch den Namen des Widgets ersetzen. Schließlich müssen sie noch in der Umgebungsvariable PYSIDE_DESIGNER_PLUGINS auf das zugehörige Skript für die Registrierung verweisen.

Neu ist zudem die Anbindung an den Nuitka, um Python-Code zu kompilieren. Nuitka ist ein Python-Compiler, der seinerseits in Python geschrieben und kompatibel zu Python 2.6 bis 3.9 ist. Mittelfristig sollen sich so eigenständige Binaries für in Qt for Python geschriebene Anwendungen erstellen lassen. Die Integration erfolgt in Zusammenarbeit mit dem Nuitka-Team, das den Compiler auf Pyside angepasst haben.

Weitere Details zum aktuellen Release von Qt for Python lassen sich dem Qt-Blog entnehmen, der auch die weiteren Pläne für das Projekt aufführt. Unter anderem ist eine Interaktion mit dem pythlib-Modul geplant. Für kommerzielle Kunden steht zudem ein Assistent zum Erstellen der Bindings über ein grafisches UI als Technical Preview zur Verfügung.

(rme)