为什么不能重复此代码?

Why cant this code be repeated?

我从这个网站上找到的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"

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

打个比方:

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

但是请注意,Tkinter 的循环所做的不仅仅是 passing。它正在处理事件,保持主要 window 打开等