Qt for Python 6.7 が利用可能です!

qt release(1)

本記事は「Qt for Python release: 6.7 is now available!」の抄訳です。
 

Qt for Pythonの最新バージョンを更新するために一生懸命取り組んできました。そして、新しいQt 6.7リリースと同時にQt for Pythonが利用可能であることをお知らせできることをうれしく思います。このリリースには多くの新機能や改善が含まれています。Qtの新機能や改善に加えて、Qt for Python は Python ユーザ🐍のために特別なメリットを提供します。このリリースでは、QtAsyncio、パフォーマンスの向上、Androidへの強化サポート、改善されたドキュメンテーション、その他のアップグレードが期待できます。

変更点の完全なリストもご覧いただけます。

⚠️ Qt Multimedia:バイナリの非互換性変更により、QAudioからQtAudioに改名された変更が、Qt/C++およびQt for Python向けに6.7.1で元に戻されることとなりました。

非同期機能の改善 

最近、当社はQtAsyncioのテクニカルプレビューが利用可能であることを発表しました。QtAsyncio は、人気のある asyncio モジュールと相互運用するための純粋な Python モジュールです。QtAsyncio.run()に新しい handle_sigint パラメータを渡すことで、SIGINT のシグナルハンドラを無効にできるようになりました。これにより、QtAsyncio と独自のアプリケーションのどちらでこのシグナルを処理するかを選択できるようになり、QtAsyncio の柔軟性が向上し、独自のコードにより多くの権限を与えることができるようになりました。Python 6.6 以降に QtAsyncio に導入されたすべての機能については、テクニカルプレビューのアナウンスをお読みください。

遅延インポートによる起動時間の改善 

起動時間を大幅に短縮するために遅延ローダーを実装しました。Pythonの新しい列挙が導入されてから、起動時間が不愉快になりました。何千ものPython列挙を最初に初期化することで、たとえその99%が使用されなくても、エネルギーの浪費は言うまでもなく、かなりの時間のロスがありました。

遅延ローダーはPEP 690と同等の実装で、インポートの要素の初期化をどのように遅延させるかを制御します。これはPEPでは一般的すぎて、今では時代遅れですが、PySideの実装の着想にはかなり役に立ちました。すべてのオブジェクトを最初に初期化する代わりに、クラスのデプロイを最初の __getattr__ 呼び出しまで遅らせます。こうすることで、クラスが実際に使われるときよりも早く生成されることがなくなります。

📈その効果は印象的で、QtCore、QtGui、QtWidgets の 3 つの基本モジュールのロードは約 35~40% 速くなりました。

また、特別な NumPy Array 互換 API に必要な NumPy の最初のインポートが、起動時の速度低下の原因となっていることが判明しました。これも起動時間を改善するために遅延ロードされるようになりました。

Androidのサポート強化 

Python + Qt Quick ベースのアプリケーションをデプロイするためのツールをより多くの人に使ってもらい、テストしてもらう中で、いくつか改善すべき点があることに気づきました。

Android サポートは Python 3.11 を使用するようになり、NDK (r26b) と必要なツールのバージョンは最新の変更に対応するために引き上げられました。python-for-androidツールの修正がアップストリームに受け入れられたので、プライベートフォークは必要なくなりました。python-for-androidのチームには、そのプロセスについて指導していただいただけでなく、協力しようという姿勢にも感謝しています。

現在は、特定のAndroidプラットフォーム用のホイール・バイナリを作成するために、そのAndroidプラットフォーム用にPySide6をクロスコンパイルする必要がありますが、この要件はまもなく不要になります。利用可能なすべてのAndroidプラットフォーム用の公式Androidホイールを提供するために取り組んでおり、pyside6-android-deployツールは非常に使いやすくなります。

ドキュメント 

PySide に含まれるツールの詳細を簡単に見つけられるように、ツールの概要ページを書き直しました。それぞれのツールに簡易的な説明を追加し、該当するチュートリアルへリンクや、使い方を説明する新しいドキュメンテーションページが追加されました。

また、APIインデックスページがより良い構造になり、デコレータ、グローバル関数、列挙が個別にリストされるようになりました。サンプルは、関連するものを最初に表示するように並び替えられ、Essentials や Addons など、どの独立したホイールに属しているかも表示されるようになりました。

最近追加されたモジュールの機能を示すために、新しい REST API (colorpaletteclient) と Qt Graphs (hellographs) のデモ例が追加されました。

✨ いつものように、特定のモジュールや機能で苦労されている場合は、新しいサンプルのアイデアをご遠慮なくリクエストしてください!

Python サポートを強化した Qt Creator 13 

数リリース前、Qt Creator チームは私たちのお気に入りの Qt IDE を Python で使えるようにするために多くの努力を払いました。C++ ベースの IDE として、主に Python 開発者が Qt Creator を Python IDE として使うための最低限の機能を提供するために、考え直さなければならないアイデアや追加しなければならない機能がたくさんありました。

2024-04-08-114745_5760x2160_scrot

PySide6のコミュニティ版と商用版をインストールするための選択
 

インタプリタの自動選択オプションや、Python プロジェクトを開いたときに言語サーバや PySide のインストールを促すツールチップを見られたことがあるかもしれません。それ以来、新しい仮想環境の簡単な作成、商用ホイールのインストール(Qt Installer を使用する場合)など、Qt Creator の機能を向上させるためにより多くの詳細が追加されてきました。最近では、Python キットの作成と変更を可能にするために、Qt Creator キットのコンセプトを適応させることに労力を費やしています。

2024-04-08-114715_1295x1040_scrot

新規プロジェクト作成時のPythonキットの選択
 

Pythonアプリケーション、特にPySideアプリケーションを開発する際の経験を向上させるアイデアの広範なリストがまだありますが、Qt Creatorを他のPython IDEと同等にするために、皆様の使用例、問題点、アイデア等について聞かせてください。

ご興味のある方、詳しくはこちらのドキュメントをご覧ください。

他に進行中 

QtQuickTestモジュールのバインディングを追加しました。これにより、Qt Quick デザインをテストすることができます。Pythonのコードベース全体が、カスタム構成を使用して flake8(リンター)警告が発生しないよう修正されました。古いバグが複数修正され、データベースのクリーンアップが行われました。また、pyside6-projectツールで翻訳ができるようになりました。

動的バインディングの研究

QtScriptモジュールの廃止に代わる動的バインディングの研究プロジェクトに関して、さらなる作業が行われました。これは、6.6リリースブログで発表されたものです。最初のテストでは、Qt Creatorにプロトタイプのスクリプトサポートを追加しました。

このプロジェクトでは、QObjectやガジェットクラスのプロパティや呼び出し可能なメソッドを公開し、他のメソッドの登録を容易にする方法を提供します。

このプロジェクトは現在着実に進行中であり、年内にテクニカルプレビューをリリース予定です。

Qt Design Studioプロジェクトの実行

Qt Design Studioを使用してQt Quickベースのアプリケーションを作成する場合、PySideを使用して実行するために一部のファイルを手動でコピーする必要があります。これは最適ではありませんが、多くのリクエストを受けて、現在、Design Studioが提供するQt Quickコンポーネントを含むPySide向けの新しい補完パッケージの最終段階のテスト中です。

この新しいパッケージのリリースはDesign Studioのバージョンに結び付けられ、Qt for Pythonのリリーススケジュールには従いません。

新しいパッケージが皆様のワークフローを助けることを確認するため、近日中にテクニカルプレビューとして提供できることを期待しています。

YoctoベースのシステムでのPySideアプリケーション

6.7.1からは、Qt Installer (Maintenance Tool) から取得できるYoctoイメージにQt for Pythonのインストールを含める予定です。現在、Boot to Qtチームが評価中であり、定期的にリリースする予定です。

macOSでのPermission APIサポート

Qtは6.5でPermission APIを導入し、アプリケーションがシステムの権限についてユーザーから明示的な同意を確認してリクエストできるようにしました。PySide6では、これはAndroidとmacOSに関連しています。PySide6を使用したPermission APIはすでにAndroidで動作していましたが、macOSでは6.7まで対応していませんでした。6.7では、pyside6-deployでアプリケーションを展開することで、QtのPermission APIに含まれるすべての権限を明示的にチェックしてリクエストできます。詳細はこちらで確認できます。

連絡を取り合いましょう!

新しい実験的サポートや機能、Pythonモジュールの統合を試していきたいと思っています。次に何をすべきか、メッセージをお送りいただくか、JIRAで提案をお知らせください👍。

リリースをお楽しみいただけることを願っております。また、いつものように、コミュニティプラットフォームにお立ち寄りいただき、バグレポートを作成することで、何かがうまく機能していない場合はお知らせください。


Blog Topics:

Comments