11

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

x.winfo_exists()

它返回一个布尔值。我已经搜索过这个,但无法找到我正在寻找的确切内容。更具体地说,我需要检查我的按钮、标签、列表框、滑块等是否存在。

4

2 回答 2

25

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()
[]
于 2013-03-09T14:44:56.027 回答
0

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

于 2016-11-27T14:25:06.000 回答