为什么不能重复此代码?
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 的循环所做的不仅仅是 pass
ing。它正在处理事件,保持主要 window 打开等
我从这个网站上找到的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 的循环所做的不仅仅是 pass
ing。它正在处理事件,保持主要 window 打开等