Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检测小部件何时从可见变为不可见或相反_Python_Tkinter_Widget_Bind_Visibility - Fatal编程技术网

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中,映射和取消映射事件指示窗口是否可见


我建议在按钮“不可见”时设置一个标志,然后使用基本的
语句,如果
语句,我不认为有任何内置命令。我明白你的意思,我实际上是在这样做,但如果有一个事件,那会非常有帮助。谢谢你的快速回答。试试
。我已经添加了一个答案,一定要让我知道这正是我想要的,谢谢!