2015-01-16 30 views
-1

我在這個網站上找到了another thread的一些代碼,但是當我試圖圍繞它編程時,我發現它只能使用一次。重複的代碼不起作用。爲什麼不能重複這段代碼?

import tkinter as tk 

def keyDetect(event): 
    root.destroy() 
    if event.char == event.keysym: 
     print(event.char) 
    elif len(event.char) == 1: 
     print(event.keysym, event.char) 
    else: 
     print(event.keysym) 


root = tk.Tk() 
root.bind_all('<Key>', keyDetect) 
root.withdraw() 
root.mainloop() 

print('1') 
root = tk.Tk() 
root.bind_all('<Key>', keyDetect) 
print('2') 
root.withdraw() 
print('3') 
root.mainloop() 
print('4') 

使用了上述4個打印示出了其中的問題是,"3"印刷但"4"不是。

+0

這裏你的實際目標是什麼?那就是,你想通過重複來實現什麼? –

回答

2

調用Tk.mainloop()開始Tkinter的主要事件循環。這是一個無限循環,直到主窗口被銷燬(關閉)。所以,你的程序不會在root.mainloop()之後執行任何行,直到循環結束。

打個比方就是:

print('3') 
while True: 
    pass 
print('4') 

然而要注意的Tkinter的環不僅僅是pass ING做更多。它是處理事件,保持主窗口打開等。

+0

我可以退出循環嗎? –

+0

是的,循環將通過銷燬主窗口而退出。這可以通過執行'root.quit()'來完成。 – iCodez

+0

我在'root.mainloop()'後添加了'root.quit()',但沒有任何改變。這是你的意思嗎? –