A1.11 ウィンドウ名、ウィンドウパス名
ウィンドウという用語は一般的にはスクリーン上の長方形の領域のオブジェクトを表します。本書では、メインウィンドウやサブウィンドウのトップレベルウィンドウを「ウィンドウ」と呼んでいて、「ウィンドウ」上に描かれる他のオブジェクトを「ウィジェット」と呼んでいます。ここでは、「ウィンドウ」および「ウィジェット」をウィンドウと呼んで説明します。
tkinter では、全てのウィンドウに名前が付けられ、親ウィンドウに配置される子ウィンドウは階層化されたウィンドウパス名で識別されます。ルートウィンドウ(メインウィンドウ)には「.」という名前が付けられています。他のウィンドウも基本的にシステムが自動的に命名します。システムの命名は「!」にウィジェット名と作成順の番号(最初はなし)が付けられます。例えば、2つ目の Label ウィジェットの場合「!label2」という名前になります。この名前は引数またはオプションの「name」でユーザーが設定することができます。ウィンドウの名前は Misc クラスの「winfo_name」メソッドで取得することができます。
親ウィンドウに配置された子ウィンドウは「p.c」という形式で識別されます。ここで、「p」は後に説明する親ウィンドウのパス名で「c」は子ウィンドウの名前です。ルートウィンドウに配置されている名前「c」のウィンドウは「.c」という名前で識別されます。ルートウィンドウに名前「c0」のウィンドウがあり、そのウィンドウに名前「c1」のウィンドウがある場合、名前「c1」のウィンドウは「.c0.c1」という形式で識別され、ウィンドウパス名といいます。ウィンドウのパス名は、ウィンドウのオブジェクトを「obj」とすると、python の str 関数で「str(obj)」として取得することができます。また、 Misc クラスの「winfo_pathname」メソッドでも取得することができます(「winfo_id()」メソッドを併用する必要があります)。子ウィンドウから親ウィンドウのパス名は Misc クラスの「winfo_parent」メソッドで取得することができます。