PythonでのGUIの開発:Tkinter vs PyQt [終了]


94

Pythonでユーザーインターフェイスを開発したい場合、TkInterとPyQtのどちらを使用しますか?

私はTkInterを始めたばかりで、ラベル、ボタン、テキストボックスなどの基本的なウィジェットでいくつかのシンプルなUIを取得できました。TkInterと比較してPyQtがどの程度優れているか知りたいだけですか?

乾杯


3
また、TkInterとPyQt以外にも、利用可能なオプションがかなりあることに注意してください。wxPythonはすぐに思い浮かぶものですが、より完全なリストはwiki.python.org/moin/GuiProgrammingにあり、より一般的なGUIパッケージのリストはpython.org/doc/faq/guiにあります。
esm

回答:


77

深刻なものを開発している場合はPyQt、特に必要に応じて学習した内容が他の言語のQtでの作業に直接変換される場合。Qtはおそらく現在利用できる最高のクロスプラットフォームインターフェイスツールキットです。

実際の(潜在的な)欠点は2つだけです。

PyQtはGPLの下でのみ利用できます。これは、コードをリリースする場合、互換性のあるライセンス、NokiaのGPL例外の条件、または商用ライセンス(費用がかかる)のもとで使用できる必要があることを意味します。これは、LGPLで利用できるようになったQtとは対照的です。

Pythonのインストールでは、PyQtはデフォルトでは含まれていません。ライブラリを自分でパッケージ化する必要があります。(Ars Technicaは、WindowsとOS Xでそれを行う方法についての良い記事を持っています。)


5
オープンソースの場合、PyQtは、使用できるライセンスのリストを指定する例外をGPLに付与します。例外の全文はここにあり、コピーはPyQtソースパッケージに含まれています。 riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang

はい、ありがとう。メモを追加しました。
Sam DeFabbia-Kane、

16
Nokiaは、PyQideとほぼ同じ機能を提供するPySideと呼ばれるライブラリの構築を開始しましたが、LGPLに基づいています。現在、* NIXベースのシステムでのみ使用できます。しかし、インポートで「PyQt4」を「PySide」と交換するだけで、(ほぼ)すべてが機能するようになります。pyside.org
James

NokiaのGPL例外のリンクは機能していません。
Stevoisiak 2018年

1
2019年現在、PyQt5はリリースされており、PySide2はLGPLの下で同じQtバインディングの大部分をサポートしています。
LightCC

40

PyQtは私たちのメインのGUIツールキットであり、1年間の開発後、他に戻ることはしたくありません。安定しており、成熟しており、クロスプラットフォームで完全にネイティブです。システムのダイアログボックス(ファイルを開くためなど)も、オペレーティングシステムで使用されるものです。

XPのテーマを調整し、それに応じてアプリのスキンを調整しました。これは、のようなツールキットに匹敵しない、非常にプロフェッショナルな外観を作成しますSwing。APIは広範で、ウィジェットなどの純粋なGUIを超えています。それはデータベース接続、印刷、スレッド(私はそれを使用し、それは魅力のように動作します)をサポートしています...私はそれをPDFの生成にも使用します(他の外部ライブラリは必要ありません)。私はマークサマーフィールドの本を「PythonとQtを使った高速GUIプログラミング」で読むことをお勧めします。QtにはGUIビルダー(Qtデザイナー)が付属しているので、これは私が使用した中で最も優れている(そして私はたくさん試しました)ことに注意してください。
私はこのビルダーを使用して、ユーザーに表示するモックアップを作成します(それはとても簡単です!)。

ここで他の2人の開発者に紹介しましたが、彼らが不平を言うのを聞いていません...


10
注意:Qt ネイティブに見えるだけです。ユーザーインターフェイス要素は実際にエミュレートされます(少なくともMac OS Xでは)。このエミュレーションのために、グラフィック要素の「感触」が奇妙であると報告されている場合があります。
エリックOレビゴット2010

22

シンプルなインターフェースtkinter小さなアプリケーションに使用しています。優れたWYSIWYGエディターの欠如がより大きなアプリの問題になるかもしれないとしても、私はそれをとても気に入っています。

大きなアプリのPyQt場合、より良い選択かもしれません。画面デザイナーは非常に優れていますが、ライセンスに問題がある可能性があります。

最後に、wxPythonこれらの欠点がないため、良い代替案になる可能性があります。


7
大規模な商用アプリケーションをtkで問題なく作成しました。それはかなりうまくスケーリングします。データセットが数百万のアイテムに達しても、それほど良いことではありませんが、そのようなアプリを開発する人はほとんどいません。
ブライアンオークリー

2
フィードバックを提供してくれたブライアンに感謝します。この回答はずっと前に行われたもので、Tkの使用経験が向上し、ますます気に入っています。
LUC

私の答えを更新しました。スケーラビリティの問題よりも1
luc

8

PyQtは本当に簡単に習得でき、QtのドキュメントはPyQtでも機能し、.NETとJavaへのポートもあります。だから、それは妖精のクロスプラットフォームとクロスランゲージです。また、PyQtがEric IDEに統合されています。

CSSスタイルのサポートも素晴らしいです。

新しいOpenSuSEインストーラーを見て、何ができるかを確認してください。



1

私はPyQtを使用しています。クロスプラットフォームで、扱いやすく、信頼性があります。

TkInterを軽く使用しましたが、TkInterがPyQtよりも優れている点は見当たりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.