グラフィックユーザーインターフェイスに関するFAQ—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.9/faq/gui
移動先:案内検索

グラフィックユーザーインターフェイスに関する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オプションを参照してください)。