2014-01-17 3 views
2

Windows 7에서 실행되는 간단한 Tkinter GUI에서 텍스트 레이블을 사용하려고합니다. 연결된 StringVars의 set 메서드를 사용할 때 텍스트 레이블을 업데이트 할 수 없습니다. 다음 코드는 Mac OS에서 잘 작동하지만 Windows 7에서는 레이블이 완전히 비어 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?Tkinter의 텍스트 레이블이 업데이트되지 않음 - Windows 7

import Tkinter as Tk 
import time 

def done(): 
    print 'called' 
    root.after_cancel(fun) 
    root.quit() 
    root.destroy() 

def myloop(): 
    global fun 
    tst.set(str(time.time()))  
    fun = root.after(100,myloop) 

root = Tk.Tk() 
root.wm_title('Title') 

tst = Tk.StringVar() 
lbl = Tk.Label(master=root,textvariable=tst) 
lbl.pack(side=Tk.TOP) 

txt = Tk.Text(master=root) 
txt.insert(Tk.INSERT,'Test2') 
txt.pack() 

root.protocol("WM_DELETE_WINDOW",done) 
fun = root.after(100,myloop) 
root.mainloop() 
+0

나는 Python2.7, Python2 함께 테스트했다. 6 및 Python2.5를 Windows 7에 설치하면 작동합니다. 시간이 업데이트됩니다. 어떤 Python 버전을 사용합니까? – User

답변

0

귀하의 프로그램을 시도한 결과, StringVar가 완벽하게 업데이트되었습니다. 제 생각에 그것이 작동하지 않을 수 있다고 생각하는 유일한 이유는 StringVar의 주인을 설정하지 않았기 때문에 문을 tst = Tk.StringVar(root)으로 바꿔야하기 때문입니다.

그러나, 텍스트가 라벨 구성의 옵션이기 때문에 당신은 StringVar 제거 할 수, 당신은 config 방법을 변경할 수 있습니다

def myloop(): 
    global fun 
    lbl.config(text=time.time()) 
    fun = root.after(100,myloop) 

# ... 
lbl = Tk.Label(master=root) 
lbl.pack(side=Tk.TOP) 
관련 문제