如何查看 Tkinter 中是否存在某个小部件?

问题描述 投票:0回答:2

现在,我知道您可以通过以下方式检查窗口是否存在:

x.winfo_exists()

返回一个

bool
。更准确地说,我需要检查按钮、标签、列表框、滑块等是否存在。然后呢?

python button listbox tkinter
2个回答
28
投票
除非您已销毁小部件,否则

winfo_exists
返回 1,在这种情况下,它返回 0。可以在任何小部件类上调用此方法,而不仅仅是 Tk 根或 Toplevels。或者,您可以使用
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()
[]

0
投票

您还可以打印类型,即类型(标签)。这不仅有助于提供存在性,还有助于查找是否有任何内容出现“NoneType”而不会出现错误。 type() 会告诉您是否有实例或其他类型可以提供有价值的线索,了解程序执行或返回项目与您认为所要求的内容的接近程度! object.winfo_exists() 和 object.winfo_children 是特定的,如果对象不是“实例”类型,则会抛出错误。

© www.soinside.com 2019 - 2024. All rights reserved.