您的主要问题的答案是,在准备好运行应用程序时,必须仅调用一次mainloop。
mainloop
只是一个看起来像这样的无限循环(它们不是方法的实际名称,名称仅用于说明要点):
while True:
event=wait_for_event()
event.process()
if main_window_has_been_destroyed():
break
在这种情况下,“事件”表示用户交互(鼠标单击,按键等)以及来自工具包或OS /窗口管理器的绘制或重新绘制窗口小部件的请求。如果该循环没有运行,则事件不会得到处理。如果未处理事件,则除非您运行自己的无限循环,否则屏幕上将不会显示任何内容,并且您的程序可能会退出。
那么,为什么不需要交互调用呢?这只是一个方便,因为否则它是不可能的,一旦你调用输入任何命令mainloop
,因为mainloop
运行,直到主窗口被破坏。