0

.pack_forget()当我们可见的小部件变得不可见或不可见的小部件变得可见时,是否可以被告知.pack()

就像是button.bind("<Visible>", func_triggered_when_the_button_become_visible)

我想隐藏和显示整个框架,当我将小部件隐藏在里面时,我希望它们的值被重置。

4

1 回答 1

0

根据 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 事件中指示窗口是否可见。

于 2020-10-06T15:53:30.957 回答