我复制了以下代码来使用Tkinter进行动画实验:
from Tkinter import *
window = Tk()
canvas = Canvas(window, width = 400, height = 300)
canvas.pack()
x0 = 10
y0 = 50
x1 = 60
y1 = 100
i = 0
deltax = 2
deltay = 3
which = canvas.create_oval(x0,y0,x1,y1,fill="red", tag='redBall')
while True:
canvas.move('redBall', deltax, deltay)
canvas.after(20)
canvas.update()
if x1 >= 400:
deltax = -2
if x0 < 0:
deltax = 2
if y1 > 300:
deltay = -3
if y0 < 0:
deltay = 3
x0 += deltax
x1 += deltax
y0 += deltay
y1 += deltay
window.mainloop()这行得很好,但我注意到,不管有没有window.mainloop()行,它似乎都是一样的。此外,这一行似乎永远不会被调用,因为流行的while循环永远不会中断。但是,我已经看过很多次这个示例代码,所以看起来window.mainloop()确实执行了一些重要的操作。那是什么东西??
发布于 2017-07-08 15:08:09
在应用程序关闭之前,window.mainloop()不允许python解释器在该行之后执行代码。例如,您可以在window.mainloop()之后添加一些打印语句,您会发现在您关闭应用程序后,python会打印它们。
from Tkinter import *
root=Tk()
#your code here
root.mainloop()
#now print
print 'Mainloop over'以这种方式,程序在主循环中循环,允许按钮和其他小部件多次执行,否则程序在第一次执行后不会执行。
https://stackoverflow.com/questions/35874044
复制相似问题