1
我已經複製下面的代碼使用的Tkinter與動畫實驗:Python的Tkinter的window.mainloop()
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()
確實執行了一些重要的事情。那個東西是什麼??
因爲在它上面有一個無限的'while True:'循環,代碼永遠不會到'window.mainloop()'。通常你會使用'mainloop()'來啓動Tkinter事件處理程序,但是在這個'canvas.update()'中導致窗口在整個循環中被顯示和更新。 – Jkdc