第 4 章 ラベルフレーム

◀ 4.16 アンカーによるラベルフレーム表示位置   【目  次】  4.18 透明度、透過色 ▶

999999

 更新日:


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

4.17 ラベルフレームの削除、非表示(destroy、place_forget)

ラベルフレームを削除するにはフレームと同様に「 LabelFrame クラス」で定義されている「destroy」メソッドを用います。また、一時的に非表示にするにはフレームと同様に「place_forget」メソッドを用います。「3.14 フレームの削除、非表示」を参照して下さい。


次のプログラムは赤色の背景の「labelframe_1」と黄色の背景の「labelframe_2」を作成して「place」メソッドでメインウィンドウに配置しています。メインウィンドウにマウスの左クリックの「<button-1>」に「bind」メソッドで関数「click_L」を、マウスの右クリックの「<button-3>」に「bind」メソッドで関数「click_R」を関連付けています。

「click_L」関数で、「labelframe_1」を「destroy」メソッドで削除し、「labelframe_2」を「place_forget」メソッドで非表示としています。

「click_R」関数で、「labelframe_2」を「place」メソッドで再表示しています。

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_1.place(x=0, y=0, width=80, height=80)
4
labelframe_2 = tk.LabelFrame(root, bg='yellow',
5
        text='labelframe_2', labelanchor='n')
6
labelframe_2.place(relx=0.5, rely=0.5,
7
        width=100, height=100,
8
        anchor='center')
9
def click_L(event):
10
    labelframe_1.destroy()
11
    labelframe_2.place_forget()
12
def click_R(event):
13
    labelframe_2.place(relx=0.5, rely=0.5,
14
        width=100, height=100,
15
        anchor='center')
16
root.bind('<Button-1>', click_L)
17
root.bind('<Button-3>', click_R)
18
root.mainloop()

このプログラムを実行すると、下図のように指定した座標にフレームが表示されます。

A004_LabelFrame_04-17

上図のウィンドウをマウスで左クリックすると、2 つのラベルフレームは非表示となります。次いで、マウスの右クリックをすると中央の黄色のラベルフレームが表示され、赤色のラベルフレームは削除されているので表示されません。マウスの左クリックと右クリックを繰り返すと、中央の黄色のラベルフレームが非表示と表示を繰り返します。