如何检查Tkinter中是否存在小部件?
现在,我知道你可以通过以下方式检查一个窗口是否存在:
x.winfo_exists()
这个方法会返回一个布尔值,也就是“真”或“假”。更具体地说,我需要检查我的按钮、标签、列表框、滑块等等是否存在。那么接下来该怎么做呢?
2 个回答
0
你还可以打印出类型,比如用 type(label)。这可以帮助你不仅确认某个东西是否存在,还能看看有没有出现 'NoneType' 这种情况,而不会报错。type() 函数会告诉你你是否有一个实例,或者其他类型,这些信息能给你提供一些有用的线索,帮助你了解程序的运行情况,或者它返回的东西是否和你想要的一样!object.winfo_exists() 和 object.winfo_children() 是比较具体的,如果对象不是 'instance' 类型,就会报错。
27
winfo_exists
这个方法会返回 1,除非你已经销毁了这个小部件(widget),如果销毁了,它就会返回 0。这个方法可以在任何小部件类上使用,不仅限于 Tk 的根窗口或顶层窗口。还有一个方法 winfo_children
可以用来获取某个小部件的所有子小部件:
>>> import Tkinter as tk
>>> root = tk.Tk()
>>> label = tk.Label(root, text="Hello, world")
>>> label.winfo_exists()
1
>>> root.winfo_children()
[<Tkinter.Label instance at 0x0000000002ADC1C8>]
>>> label.destroy()
>>> label.winfo_exists()
0
>>> root.winfo_children()
[]