首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从frame继承的类的对象的实例属性,如何检查控件的类型

从frame继承的类的对象的实例属性,如何检查控件的类型
EN

Stack Overflow用户
提问于 2019-07-15 20:11:13
回答 2查看 110关注 0票数 0

我的代码是:

代码语言:javascript
复制
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)

我已经创建了对象

代码语言:javascript
复制
top= Tk()
interface = Inter(top)

interface.mainloop()
interface.destroy()

我尝试过vars()__dict__方法,但我获得了对象'interface‘的实例属性(即小部件的名称)作为字符串。因此,我不能使用.winfo_class(方法)检查小部件是按钮还是标签。

EN

回答 2

Stack Overflow用户

发布于 2019-07-15 20:23:07

您可以简单地比较对象类型,就像您可以与任何其他python对象一样:

代码语言:javascript
复制
>>> isinstance(self.button_click, Tkinter.Button)
True

您要查找的方法是winfo_children.

winfo_children()

返回一个列表,其中包含此小部件的所有子部件的小部件实例。窗口按从下到上的堆叠顺序返回。如果顺序不重要,您可以从孩子小部件属性(它是一个将Tk小部件名称映射到小部件实例的字典,因此widget.children.values()会给出一个实例列表)获得相同的信息。

语法:root.winfo_children()

票数 0
EN

Stack Overflow用户

发布于 2019-07-15 20:33:49

如果您想在interface中检查子类

代码语言:javascript
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57039495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档