我的代码是:
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‘的实例属性(即小部件的名称)作为字符串。因此,我不能使用.winfo_class(方法)检查小部件是按钮还是标签。
发布于 2019-07-15 20:23:07
您可以简单地比较对象类型,就像您可以与任何其他python对象一样:
>>> isinstance(self.button_click, Tkinter.Button)
True您要查找的方法是winfo_children.
winfo_children()
返回一个列表,其中包含此小部件的所有子部件的小部件实例。窗口按从下到上的堆叠顺序返回。如果顺序不重要,您可以从孩子小部件属性(它是一个将Tk小部件名称映射到小部件实例的字典,因此widget.children.values()会给出一个实例列表)获得相同的信息。
语法:root.winfo_children()
发布于 2019-07-15 20:33:49
如果您想在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")https://stackoverflow.com/questions/57039495
复制相似问题