第 3 章 フレーム

◀ 4.22 ウィンドウハンドルの取得   【目  次】  4.24 クラス名とイベント処理 ▶

999999

 更新日:


 このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。

4.23 オブジェクト名の設定と名前、パス名の取得(name、winfo_name、winfo_id、winfo_pathname)

ラベルフレームにはオブジェクトが作成されたときにシステムによって名前が付けられています。この名前は、ルートウィンドウからのパスを含めたパス名でオブジェクトを操作するのに用いられます。詳細は A1.11 ウィンドウ名、ウィンドウパス名を参照して下さい。

オブジェクトの名前はフレームと同様に、「name」オプションで任意の名前に設定することができます。また、「winfo_name」メソッドで取得することができます。オブジェクトのパス名は、「winfo_id」メソッドと「winfo_pathname」メソッドで取得することができます。「3.20 オブジェクト名の設定と名前、パス名の取得」を参照して下さい。


次のプログラムはラベルフレーム「labelframe」を作成しています。オブジェクト名として「name」キーワードに文字列「nameLabelFrame」を指定しています。ラベルフレームのオブジェクト名を「winfo_name」メソッドで取得して「print」出力しています。次いで、「winfo_id」メソッドでラベルフレームのオブジェクト識別子を取得して変数「fid」に代入して、「print」出力しています。オブジェクト識別子から「winfo_pathname」メソッドでラベルフレームのパス名を取得して「print」出力しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.geometry('300x200+100+100')
4
labelframe = tk.LabelFrame(root, bg='red',
5
        text='labelframe', labelanchor='n',
6
        name='nameLabelFrame')
7
labelframe.place(x=50, y=20, width=200, height=160)
8
root.update()
9
print(labelframe.winfo_name())
10
fid = labelframe.winfo_id()
11
print(fid)
12
print(labelframe.winfo_pathname(hex(fid)), str(frame))
13
root.mainloop()

プログラムを実行すると、ラベルフレームのオブジェクト名、オブジェクト識別子、パス名が順に「print」出力されます。

nameLabelFrame
3736952
.nameLabelFrame .nameLabelFrame