2011-08-03 8 views
6

Tkinter를 사용하여 Python에서 아주 간단한 UI를 작성하려고합니다. 나는 StringVar 클래스로 작은 문제에 봉착했다. 문제는 파이썬 스크립트를 실행할 때 StringVar 변수를 초기화하는 줄에 오류가 발생한다는 것입니다. 나는이는 것을 느낌이Python 프로그램에서 'StringVar'문제가 발생했습니다.

$ python test.py 
Traceback (most recent call last): 
    File "test.py", line 3, in <module> 
    var = StringVar() 
    File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 254, in __init__ 
    Variable.__init__(self, master, value, name) 
    File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 185, in __init__ 
    self._tk = master.tk 
AttributeError: 'NoneType' object has no attribute 'tk' 
Exception AttributeError: "StringVar instance has no attribute '_tk'" in <bound method StringVar.__del__ of <Tkinter.StringVar instance at 0xb73cc80c>> ignored 

:이 오류가 나는 파이썬을 통해 그것을 실행하면

from Tkinter import * 

var = StringVar() 
var.set('test'); 

: 제가 작업을 좀하고 싶습니다이 문제와 샘플 프로그램을 작성했습니다 내 파이썬 설치 문제,하지만 내가 뭔가 잘못하고있을 수 있습니다? 내가 차이를 만드는 경우 우분투 리눅스에서 2.6.5 파이썬 버전을 사용하고 있습니다.

답변

10

StringVar을 호출하기 전에 명시 적으로 Tk()를 호출해야한다고 생각합니다.

from Tkinter import * 
Tk() # Add this 
var = StringVar() 
var.set('test'); 
+7

왜 전화를해야하나요'TK에()'를 명시 적으로 만들기 전에'객체 StringVar' :

그냥 이렇게? – nbro

1

Tkinter 자신과는 아무 것도 해본 적이 없지만이 StringVar 클래스는 Variable.__init__()에 대한 호출로 추적 코드에서 볼 수 있듯이 기본 Variable 클래스에서 상속받는 것처럼 보입니다. 예외는 "self.tk = master.tk"문과 함께 발생했습니다. 다음 오류 메시지는이 "master"매개 변수가 NoneType이므로 tk 속성이 없음을 나타냅니다. 여기에 StringVar에 대한 Tkinter 설명서가 있습니다. http://epydoc.sourceforge.net/stdlib/Tkinter.StringVar-class.html

master 매개 변수는 기본적으로 None으로 설정됩니다. Master가이 StringVar를 포함 할 수있는 위젯으로 제공되어야합니다 (즉, StringVar가 위젯과 연결되지 않았습니까?). StringVar 객체를 'tk'속성을 갖기 위해 위젯과 연결해야 할 필요가 있다고 말해야합니다.

관련 문제