为什么不能重复这段代码?

时间:2015-01-16 23:30:56

标签: python python-3.x tkinter

我借用了我在本网站上找到的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"不是。

1 个答案:

答案 0 :(得分:2)

调用Tk.mainloop()启动Tkinter的主要事件循环。这是一个无限循环,一直持续到主窗口被销毁(关闭)。因此,在循环退出之前,您的程序不会执行root.mainloop()之后的任何行。

类比将是:

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

但请注意,Tkinter的循环不仅仅是pass。它正在处理事件,保持主窗口打开等等。