Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Python Tkinter对象类型_Python_Class_Tkinter - Fatal编程技术网

获取Python Tkinter对象类型

获取Python Tkinter对象类型,python,class,tkinter,Python,Class,Tkinter,我目前正在开发一个程序,该程序在Python程序中处理许多不同的可能条目小部件 我需要一些代码来确定特定对象的小部件类型,例如Entry或Checkbutton 我尝试过使用type(var)方法,但没有成功(我得到了缺少所需变量self的错误)以及var.\uu类,我没有取得任何进展 for d in dataTypes: if isinstance(d, Entry): print("Found Entry!") elif type(d).__name__ =

我目前正在开发一个程序,该程序在Python程序中处理许多不同的可能条目小部件

我需要一些代码来确定特定对象的小部件类型,例如
Entry
Checkbutton

我尝试过使用
type(var)
方法,但没有成功(我得到了缺少所需变量
self
的错误)以及
var.\uu类
,我没有取得任何进展

for d in dataTypes:
    if isinstance(d, Entry):
        print("Found Entry!")
    elif type(d).__name__ == 'Checkbutton':
        print("Found Checkbox!")

有人知道我如何解决这个问题吗?

如果您需要名称作为字符串,可以使用
.winfo\u class()
方法:

for d in dataTypes:
    if d.winfo_class() == 'Entry':
        print("Found Entry!")
    elif d.winfo_class() == 'Checkbutton':
        print("Found Checkbutton!")
或者,您可以访问
\uuuu name\uuuu
属性:

for d in dataTypes:
    if d.__name__ == 'Entry':
        print("Found Entry!")
    elif d.__name__ == 'Checkbutton':
        print("Found Checkbutton!")
也就是说,使用是一种更常见的/类似于蟒蛇的方法:

for d in dataTypes:
    if isinstance(d, Entry):
        print("Found Entry!")
    elif isinstance(d, Checkbutton):
        print("Found Checkbutton!")
此外,您当前的代码失败,因为
类型(d)。\uu\u name\uu
不会返回您认为它会返回的内容:

>>> from tkinter import Checkbutton
>>> type(Checkbutton).__name__
'type'
>>>

请注意,它返回由
type
返回的type对象的名称,而不是
Checkbutton

的名称。非常感谢您的回复!您建议的第一个方法返回了一个错误;“无效的位置参数‘self’”,但是第二种方法工作得很好!非常感谢你的帮助!