如何解决检测小部件何时从可见更改为不可见或相反
当我们可见的窗口小部件变得不可见.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',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中,“映射”和“取消映射”事件指示窗口是否可见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。