Python 检测小部件何时从可见变为不可见或相反
当我们看到一个可见的小部件变为不可见的Python 检测小部件何时从可见变为不可见或相反,python,tkinter,widget,bind,visibility,Python,Tkinter,Widget,Bind,Visibility,当我们看到一个可见的小部件变为不可见的.pack\u-forget()或一个不可见的小部件变为可见的.pack()时,是否可能收到通知 类似于button.bind(“,func\u在按钮变为可见时触发) 我想隐藏和显示整个框架,当我将小部件隐藏在里面时,我想重置它们的值。根据acw1668的建议,我认为是您想要的。下面是一个让您更好理解的示例: from tkinter import * from tkinter import messagebox root = Tk() def chec
.pack\u-forget()
或一个不可见的小部件变为可见的.pack()
时,是否可能收到通知
类似于button.bind(“,func\u在按钮变为可见时触发)
我想隐藏和显示整个框架,当我将小部件隐藏在里面时,我想重置它们的值。根据acw1668的建议,我认为
是您想要的。下面是一个让您更好理解的示例:
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()
从tkinter导入*
从tkinter导入消息框
root=Tk()
def检查(事件):#仅当按钮可见时才触发功能
messagebox.showinfo('可见','仅因为按钮可见而查看此消息')
b=按钮(root,text='Im将消失')#制作按钮但不打包(不可见)
b1=按钮(root,text='Click me to make the Button English',width=50,command=lambda:b.pack_forget())#隐藏按钮(使其不可见)
b1.包装(padx=10)
b2=按钮(root,text='Click me to make the Button出现',width=50,command=lambda:b.pack())#显示按钮(使其可见)
b2.封装(padx=10)
b、 绑定(“”,检查)#每次按钮可见时,都会触发检查()
root.mainloop()
我发表评论是为了更好地理解这一点,如果有任何疑问,请告诉我
更多关于文档中的
:
只要窗口的映射状态发生更改,就会生成映射和取消映射事件
窗口是在未映射状态下创建的。顶级窗口在转换到正常状态时将被映射,而在撤消和图标状态下将被取消映射。当其他窗口置于几何图形管理器(例如,块或网格)的控制下时,它们将被映射
仅当窗口及其所有祖先都已映射时,该窗口才可见。请注意,几何图形管理器通常不会映射其子对象,直到它们自己被映射,并且在它们成为未映射时取消映射所有子对象;因此,在Tk中,映射和取消映射事件指示窗口是否可见
我建议在按钮“不可见”时设置一个标志,然后使用基本的
语句,如果语句,我不认为有任何内置命令。我明白你的意思,我实际上是在这样做,但如果有一个事件,那会非常有帮助。谢谢你的快速回答。试试
和
。我已经添加了一个答案,一定要让我知道这正是我想要的,谢谢!