.pack_forget()当我们可见的小部件变得不可见或不可见的小部件变得可见时,是否可以被告知.pack()?
就像是button.bind("<Visible>", func_triggered_when_the_button_become_visible)
我想隐藏和显示整个框架,当我将小部件隐藏在里面时,我希望它们的值被重置。
.pack_forget()当我们可见的小部件变得不可见或不可见的小部件变得可见时,是否可以被告知.pack()?
就像是button.bind("<Visible>", func_triggered_when_the_button_become_visible)
我想隐藏和显示整个框架,当我将小部件隐藏在里面时,我希望它们的值被重置。
根据 acw1668 的建议,我认为<Map>这就是您要寻找的东西。这是一个示例,可以让您更好地理解:
from tkinter import *
from tkinter import messagebox
root = Tk()
def check(event): #function to be triggered only when the button is visible
messagebox.showinfo('Visible','Seeing this message only because button is visible')
b = Button(root,text='Im going to disappear') #making button but not packing it(invisible)
b1 = Button(root,text='Click me to make the button disappear',width=50,command=lambda: b.pack_forget()) #to hide the button(to make invisible)
b1.pack(padx=10)
b2 = Button(root,text='Click me to make the button appear',width=50,command=lambda: b.pack()) #to show the button(to make visible)
b2.pack(padx=10)
b.bind('<Map>',check) #every time button is visible, check() is triggered
root.mainloop()
我已经发表评论以更好地理解这一点,如果有任何疑问,请告诉我。
<Map>来自文档的更多信息:
每当窗口的映射状态发生变化时,都会生成 Map 和 Unmap 事件。
Windows 在未映射状态下创建。顶级窗口在转换到正常状态时会被映射,而在撤回和图标状态下则不会被映射。其他窗口在几何管理器(例如包或网格)的控制下被映射。
一个窗口只有在它和它的所有祖先都被映射时才可见。请注意,几何管理器通常不会映射他们的孩子,直到他们自己被映射,并在他们变得未映射时取消映射所有孩子;因此在 Tk Map 和 Unmap 事件中指示窗口是否可见。