12

人間工学的な理由でGUIを作り直すアプリケーションがあります。それはPyGTKで書かれていて、将来の開発を容易にするためにPyQtに切り替えるべきかどうか疑問に思っています。

このアプリケーションには、ボタン、ツールバー、ダイアログなどを備えたほとんどの古典的なUIがありますが、いくつかの特定の要件もあります。ツリービュー/テーブルビューに基づいてカスタムウィジェットを作成する必要があります(スプレッドシートのようなウィジェットを作成するため)。このアプリケーションには、 GUIを更新する多くのワーカースレッド。

私はこれらの2つの点についてアドバイスを求めています:

  • カスタムウィジェットの作成に関して、PyQtは、特に既存のウィジェットをわずかに変更するために、PyGTKよりも優れたメカニズムを提供しますか?
  • PyGTKの使用中にワーカースレッドによるGUIの更新に問題がありました(threads_init()およびthreads_enter()を適切に使用している場合でも)。その点でPyQtはもっと良いですか?
4

5 に答える 5

3

(少なくとも私にとっては) GTK+ の方が見栄えがするので、私は GTK+ が一番好きです。ただし、PyQt とその亜種 (PySide など) には、WebKit エンジン、XML パーサー、SQL サポートなどを含む非常に多くの追加機能があります。

見た目だけが必要な場合は、GTK+/PyGObject と言えます。PyQt にあるものを使用する予定がある場合は、PyQt を使用してください。

補足として、GTK+ を使い続ける場合は、PyGtk+ がメンテナンスされなくなったため、PyGObject と GTK+ 3.0 にアップグレードすることをお勧めします。

于 2013-04-04T22:43:57.413 に答える
1

GTKを使っていないので比較できませんが、Qtをお勧めします。

Qtには間違いなくあなたが話している「treeview/tableview」があり、「セル」をカスタムウィジェットにすることができます(私は今このトピックを勉強しています)。Qtはスレッドについて多くのことを考慮して作成されているため、ワーカースレッドはシグナル/スロットメカニズムを簡単に使用できます。はい、スタイルシートまたはサブクラス化を適用することにより、既存のウィジェットを変更できます。

PyQtについては、ライセンスの問題があるためお勧めしません。PySideは、私にとってより優れたQt→Pythonバインディングのようです。商用アプリケーションで自由に使用でき、APIにいくつかの小さな利点があります(ただし、それ以外の場合はPyQtと完全に互換性があります)。

Qtはクロスプラットフォームであり、PySideアプリケーションのデプロイはcx_Freezeを使用すると非常に簡単です。アプリケーションのユーザーは、何もインストールする必要はありません。

于 2012-06-15T12:35:53.200 に答える
1

間違いなく PyQt... 高度なアプリケーションで使用されているものはたくさんあります... 個人的には KDE を使用しているため、システムの GUI も Qt を使用しています。私はスプレッドシート アプリケーションも作成していますが、最初に考えたよりもはるかに簡単であることがわかりました...しかし、BiaXpirit も正しいです。オープン ソース アプリを開発している場合を除いて、おそらく PySide などを使用する必要があります。そうしないと...

于 2012-08-10T10:28:51.040 に答える
1

私も PyGTK を使用したことはありませんが、Qt の非常に優れた 2 つの機能は、モデル/ビュープログラミングとシグナル/スロットです。そのようなものが必要な場合は、少なくともそれらに関するドキュメントを読んで、その点で 2 つのツールキットを比較する価値があると思います。

デザイナーは時間の節約にもなります。プロモーション機能--- デザイナーでカスタム ウィジェットを視覚的に似たものに置き換えることができます。たとえば、関数でカスタム ツリー ビューを実装しています --- は非常に便利です。デザイナを使用して通常のツリー ビューを表示できますが、エクスポートするとカスタム クラスが使用されます。

ドキュメントは素晴らしいです。

編集: Qt ドキュメントを直接使用できます。私は PySide を使用して Python でプログラミングを行ってきましたが、実際に特定のドキュメントが必要な例はほんのわずかです。存在しますが。

于 2013-03-03T16:35:07.407 に答える
1

私もGTKの経験はありませんが、それでもいくつかの答えを提供できます:

  • Qt は最初からオブジェクト指向になるように設計されています。その中のほとんどすべてが、サブクラス化の優れたサポートを備えています。PyQtも同様です。

  • Qt は、メインの GUI スレッド以外のスレッドによる GUI の変更を明示的にサポートしていません。この方法でクラッシュを引き起こす可能性があります。ただし、BlaXpirit が述べたように、シグナル パッシングなど、さまざまな非常に簡単なスレッド間通信メカニズムがあります。

于 2012-08-03T21:59:23.877 に答える