If you need the name as a string, you can use the .winfo_class()
method:
for d in dataTypes:
if d.winfo_class() == 'Entry':
print("Found Entry!")
elif d.winfo_class() == 'Checkbutton':
print("Found Checkbutton!")
Or, you could access the __name__
attribute:
for d in dataTypes:
if d.__name__ == 'Entry':
print("Found Entry!")
elif d.__name__ == 'Checkbutton':
print("Found Checkbutton!")
That said, using isinstance
is a more common/pythonic approach:
for d in dataTypes:
if isinstance(d, Entry):
print("Found Entry!")
elif isinstance(d, Checkbutton):
print("Found Checkbutton!")
Also, your current code is failing because type(d).__name__
does not return what you think it does:
>>> from tkinter import Checkbutton
>>> type(Checkbutton).__name__
'type'
>>>
Notice that it returns the name of the type object returned by type
, not the name of Checkbutton
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…