第 4 章 ラベルフレーム

◀ 4.23 オブジェクト名の設定と名前、パス名の取得   【目  次】  4.25 デフォルトカラーの変更 ▶

999999

 更新日:


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

4.24 クラス名とイベント処理(class、bind_class、winfo_class)

複数のラベルフレームに同じイベント処理を設定することができます。フレームと同様に、固有オプションの「class」と Misc クラスの「bind_class」と「winfo_class」メソッドを用います。「3.21 クラス名とイベント処理」を参照して下さい。


次のプログラムは 背景色が「赤」、「緑」、「青」の 3 つのラベルフレーム「labelframe_1」、「labelframe_2」、「labelframe_3」を作成しています。ラベルフレームの「labelframe_2」と「labelframe_3」の「class」オプションに同じクラス名「LabelFrameClass」を指定しています。ここで、キーワード「class」は python の予約語なので、引数では「class_」とします。

ラベルフレーム「labelframe_1」のクラス名を「winfo_class」メソッドで取得して、同じクラス名のオブジェクトに「bind_class」メソッドで、マウスの右クリックのイベントを関数「cbind_1」に関連付けています。

同様に、ラベルフレーム「labelframe_2」のクラス名を「winfo_class」メソッドで取得して、同じクラス名のオブジェクトに「bind_class」メソッドで、マウスの右クリックイベントを関数「cbind_2」に関連付けています。これにより、同じクラス名を設定したラベルフレーム「labelframe_3」にも同様のイベントが関連付けられます

1
import tkinter as tk
2
root = tk.Tk()
3
root.geometry('300x200+100+100')
4
labelframe_1 = tk.LabelFrame(root, bg='red',
5
        text='labelframe_1', labelanchor='n')
6
labelframe_2 = tk.LabelFrame(root, bg='green',
7
        text='labelframe_2', labelanchor='n',
8
        class_='LabelFrameClass')
9
labelframe_3 = tk.LabelFrame(root, bg='blue',
10
        text='labelframe_3', labelanchor='n',
11
        class_='LabelFrameClass')
12
labelframe_1.place(x=0, y=0, width=100, height=180)
13
labelframe_2.place(x=100, y=0, width=100, height=180)
14
labelframe_3.place(x=200, y=0, width=100, height=180)
15
def cbind_1(event):
16
    print('cbind_1')
17
def cbind_2(event):
18
    print('cbind_2')
19
root.bind_class(labelframe_1.winfo_class(),
20
        '<Button-3>', cbind_1)
21
root.bind_class(labelframe_2.winfo_class(),
22
        '<Button-3>', cbind_2)
23
root.mainloop()

プログラムを実行すると、3 つのラベルフレームが下図のように表示されます。

A004_LabelFrame_04-24

「赤」のラベルフレームをマウスで右クリックすると次のように「print」出力されます。

cbind_1

「緑」と「青」のラベルフレームをマウスで右クリックすると次のように「print」出力されます。

cbind_2