2014-12-03 3 views
1

현재 파이썬 프로그램에서 다양한 가능한 입력 위젯을 처리하는 프로그램을 작성 중입니다.파이썬 Tkinter 오브젝트 유형 얻기

Entry 또는 Checkbutton과 같이 어떤 특정 위젯 유형을 결정할 수있는 코드가 필요합니다.

나는 뿐 아니라 오류가 누락되어 오류가 발생하여 type(var) 메서드를 사용하려고 시도했지만 아무런 진전을 이루지 못하고 있습니다.

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

아무도 내가 이것을 해결할 수있는 아이디어가 있습니까? isinstance이 있습니다 사용했다

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

: 당신이 __name__ 속성에 액세스 할 수 있습니다,

for d in dataTypes: 
    if d.winfo_class() == 'Entry': 
     print("Found Entry!") 
    elif d.winfo_class() == 'Checkbutton': 
     print("Found Checkbutton!") 

또는 : 당신은 문자열로 이름을해야하는 경우

답변

3

, 당신은 .winfo_class() 방법을 사용할 수 있습니다 보다 일반적인/파이썬 접근 :

for d in dataTypes: 
    if isinstance(d, Entry): 
     print("Found Entry!") 
    elif isinstance(d, Checkbutton): 
     print("Found Checkbutton!") 

또한, 현재 코드는 당신이 그것을하지 무슨 생각을 반환하지 않습니다 type(d).__name__ 때문에 실패 :이 type, Checkbutton의 이름이 아닌 의해 반환되는 형식 개체의 이름을 반환

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

공지있다.

+0

답장을 보내 주셔서 감사합니다. 제안한 첫 번째 방법은 오류를 반환했습니다. "잘못된 위치 인수 '자체'"그러나 두 번째 방법은 완벽하게 작동합니다! 당신의 도움을 주셔서 대단히 감사합니다! – JonIsAmazingYa