グラフィックユーザインターフェース FAQ
**************************************


一般的な GUI の質問
===================


Python の GUI ツールキットには何がありますか？
==============================================

Standard builds of Python include an object-oriented interface to the
Tcl/Tk widget set, called tkinter.  This is probably the easiest to
install (since it comes included with most binary distributions of
Python) and use. For more info about Tk, including pointers to the
source, see the Tcl/Tk home page.  Tcl/Tk is fully portable to the
macOS, Windows, and Unix platforms.

対象とするプラットフォームによっては他の選択肢もあります。プラットフォ
ーム互換 および プラットフォーム固有 の GUI フレームワークのリストを
python wiki で参照できます。


Tkinter の質問
==============


Tkinter アプリケーションを凍結するにはどうしますか？
----------------------------------------------------

Freeze はスタンドアロンアプリケーションを生成するツールです。Tkinter
アプリケーションを凍結するとき、それは Tcl と Tk ライブラリを必要とす
るので、真のスタンドアロンにはなりません。

一つの解決策は、アプリケーションに Tcl と Tk ライブラリを同梱し、環境
変数 "TCL_LIBRARY" と "TK_LIBRARY" でランタイムに指定することです。

真にスタンドアロンなアプリケーションにするためには、ライブラリを成す
Tcl スクリプトもアプリケーションに統合されていなければなりません。それ
をサポートするツールの一つは SAM (stand-alone modules) で、Tix ディス
トリビューション (http://tix.sourceforge.net/) の一部です。

SAM を有効にするように Tix をビルドして、Python の
"Modules/tkappinit.c" 内部の "Tclsam_init()" 等への適切なコールを実行
し、libtclsam と libtksam にリンクしてください (Tix ライブラリを含んで
も良いです)。


I/O を待つ間に扱われる Tk イベントを作れますか？
------------------------------------------------

Windows 以外のプラットフォームについては、はい、スレッドさえ必要ありま
せん！  ただし、I/O コードを少し再構成しなければなりません。Tk には Xt
の "XtAddInput()" コールと同等なものがあるので、ファイルディスクリプタ
上で I/O が可能なときに Tk メインループから呼ばれるコールバック関数を
登録できます。 ファイルハンドラ を参照してください。


Tkinter で働くキーバインディングが得られません。なぜですか？
------------------------------------------------------------

"bind()" メソッドでイベントに結び付けられたイベントハンドラが、適切な
キーが押されたときにさえハンドルされないという苦情がよく聞かれます。

最も一般的な原因は、バインディングが適用されるウィジェットが "キーボー
ドフォーカス" を持たないことです。Tk ドキュメントでフォーカスコマンド
を確認してください。通常はウィジェットの中をクリックすることでキーボー
ドフォーカスを与えられます (ただしラベルには与えられません。takefocus
オプションを参照してください)。
