2011-08-08 2 views
1

Tk 창에 실시간으로 표시 될 정수를 조작하고 싶습니다.Tkinter : 어떻게 업데이트 할 수있는 텍스트 필드를 배치합니까?

내가 시도 :

xp = StringVar() 
Label(master, textvariable=xp).pack() 
xp.set(0) 

다음 나중에, 나는 시도 :

xp.set(xp+1) 

그러나 메시지와 함께, 그 라인에 심하게 실패

Exception in Tkinter callback 
File "/usr/lib/.../Tkinter.py", line 1413, in __call__ 
    return self.func(*args) 
File "rpg.py", line 26, in fight 
    xp.set(xp+1) 
NameError: global name 'xp' is not defined 

내가 원하는 "xp"값을 증가시킬 수 있어야하며, 실시간으로 창에 표시됩니다. 또한 "xp"를 곱셈과 지수 등으로 정수로 조작 할 수 있기를 원합니다.

내가 잘못하고있는 것을 지적 할 수 있다면 기쁠 것입니다.

답변

3

첫 번째 코드 단편에있는 xp 변수의 범위가 두 번째 코드 단편을 포함하지 않는 것처럼 보입니다. 즉, 변수가 실제로는 다른 변수 (즉, 매우 비슷한 이름)이므로 두 번째 코드 단편은 StringVar에 액세스 할 수있는 핸들없이 실행됩니다. 이는 작동하지 않습니다.

+0

네, 같은 클래스이지만 다른 기능을합니다. 변수를 클래스의 둘 이상의 함수에서 사용할 수 있도록 선언하려면 어떻게해야합니까? – thatbennyguy

+0

@thatbennyguy 변수를 "self"에 할당하면 클래스의 어느 위치에서나 액세스 할 수 있습니다. "xp"를 "self.xp"로 바꿉니다. – mesilliac

+0

http://docs.python.org/tutorial/classes.html에 따르면, 그리고 (파이썬 프로그래머가 아닌 프로그래머이므로 조심해서!)'xp'를'self .__ xp'로 대체하십시오. –