このホームページは 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」メソッドで再表示しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe_1 = tk.LabelFrame(root, bg='red', | |
text='labelframe_1', labelanchor='n') | |
labelframe_1.place(x=0, y=0, width=80, height=80) | |
labelframe_2 = tk.LabelFrame(root, bg='yellow', | |
text='labelframe_2', labelanchor='n') | |
labelframe_2.place(relx=0.5, rely=0.5, | |
width=100, height=100, | |
anchor='center') | |
def click_L(event): | |
labelframe_1.destroy() | |
labelframe_2.place_forget() | |
def click_R(event): | |
labelframe_2.place(relx=0.5, rely=0.5, | |
width=100, height=100, | |
anchor='center') | |
root.bind('<Button-1>', click_L) | |
root.bind('<Button-3>', click_R) | |
root.mainloop() |
このプログラムを実行すると、下図のように指定した座標にフレームが表示されます。
上図のウィンドウをマウスで左クリックすると、2 つのラベルフレームは非表示となります。次いで、マウスの右クリックをすると中央の黄色のラベルフレームが表示され、赤色のラベルフレームは削除されているので表示されません。マウスの左クリックと右クリックを繰り返すと、中央の黄色のラベルフレームが非表示と表示を繰り返します。