グラフィックユーザーインターフェイスに関するFAQ
一般的なGUIの質問
Python用のGUIツールキットは何ですか?
Pythonの標準ビルドには、 tkinter と呼ばれるTcl / Tkウィジェットセットへのオブジェクト指向インターフェースが含まれています。 これはおそらくインストールして使用するのが最も簡単です(Pythonのほとんどのバイナリディストリビューションに含まれているため)。 ソースへのポインタを含むTkの詳細については、 Tcl / Tkホームページを参照してください。 Tcl / Tkは、macOS、Windows、およびUnixプラットフォームに完全に移植可能です。
目的のプラットフォームに応じて、いくつかの選択肢もあります。 クロスプラットフォームおよびプラットフォーム固有 GUIフレームワークのリストは、pythonwikiにあります。
Tkinterの質問
Tkinterアプリケーションをフリーズするにはどうすればよいですか?
Freezeは、スタンドアロンアプリケーションを作成するためのツールです。 Tkinterアプリケーションをフリーズする場合、アプリケーションにはTclおよびTkライブラリが引き続き必要であるため、アプリケーションは真にスタンドアロンではありません。
1つの解決策は、TclおよびTkライブラリとともにアプリケーションを出荷し、 TCL_LIBRARY
および TK_LIBRARY
環境を使用して実行時にそれらを指すことです。変数。
真にスタンドアロンのアプリケーションを入手するには、ライブラリを形成するTclスクリプトもアプリケーションに統合する必要があります。 これをサポートするツールの1つは、Tixディストリビューション( http://tix.sourceforge.net/ )の一部であるSAM(スタンドアロンモジュール)です。
SAMを有効にしてTixをビルドし、Tclsam_init()
などへの適切な呼び出しを実行します。 PythonのModules/tkappinit.c
内で、libtclsamおよびlibtksamとリンクします(Tixライブラリも含めることができます)。
I / Oの待機中にTkイベントを処理できますか?
Windows以外のプラットフォームでは、そうです。スレッドも必要ありません。 ただし、I / Oコードを少し再構築する必要があります。 TkにはXtのXtAddInput()
呼び出しと同等のものがあり、ファイル記述子でI / Oが可能な場合にTkメインループから呼び出されるコールバック関数を登録できます。 ファイルハンドラーを参照してください。
Tkinterでキーバインディングを機能させることができません:なぜですか?
bind()
メソッドでイベントにバインドされたイベントハンドラーは、適切なキーが押されても処理されないという苦情がよく聞かれます。
最も一般的な原因は、バインディングが適用されるウィジェットに「キーボードフォーカス」がないことです。 focusコマンドのTkドキュメントを確認してください。 通常、ウィジェットはクリックすることでキーボードフォーカスが与えられます(ただし、ラベルの場合はそうではありません。takefocusオプションを参照してください)。