我的代码是:
from tkinter import *
class Inter(Frame):
def __init__(self, fenetre, **kwargs):
Frame.__init__(self, window, width=768, height=576, **kwargs)
self.pack(fill=BOTH)
self.compt= 0
self.message = Label(self, text="No click")
self.message.pack()
self.button_quit = Button(self, text="Quit", command=self.quit)
self.button_quit.pack(side="left")
self.button_click = Button(self, text="Click", fg="red",
command=self.click)
self.button_click.pack(side="right")
def click(self):
self.compt += 1
self.message["text"] = " number of clicks={}".format(self.compt)
我已经创建了对象
top= Tk()
interface = Inter(top)
interface.mainloop()
interface.destroy()
我尝试了vars()
和__dict__
方法,但是我将对象'interface'的实例属性(即小部件名称)作为str。因此,我无法使用.winfo_class(方法)检查小部件是按钮还是标签。
答案 0 :(得分:0)
您可以像比较任何其他python对象一样简单地比较对象类型:
>>> isinstance(self.button_click, Tkinter.Button)
True
您要查找的方法是 winfo_children 。
winfo_children()
返回一个列表,其中包含该控件所有子级的窗口小部件实例 小部件。窗口以从下到上的堆叠顺序返回。 如果订单无关紧要,您可以从 children小部件属性(这是映射Tk小部件名称的字典 小部件实例,因此widget.children.values()为您提供了 实例)。
语法:
root.winfo_children()
答案 1 :(得分:0)
如果您要检查interface
中儿童的课程
for name in interface.children:
widget = interface.nametowidget(name)
print(name, 'is Button:', isinstance(widget, tkinter.Button))
print(name, 'is Label:', isinstance(widget, tkinter.Label))
print(name, 'is Button:', widget.winfo_class() == "Button")
print(name, 'is Label:', widget.winfo_class() == "Label")