我需要一些幫助來完成作業,今天晚上我問了一個與它有關的問題,但是我認識到它的描述和編寫都很差。我會嘗試這次更具體一些。在Tkinter畫布中移動對象的有效方法
我有下面的代碼段,這是一個遊戲類(從畫布類繼承)的內部:
def move_ball(self):
if self.balldir==0:
self.move(self.ball,0,-10)
elif self.balldir==1:
self.move(self.ball,0,10)
root.after(20,self.move_ball)
此方法supossed移動一個球在畫布上,根據self.balldir 。如果它是0,則向上移動,如果是1,則向下移動。
它可以在幾秒鐘內正常工作,但它只是讓遊戲變得越來越慢,直到它完全停止。我也嘗試過使用time.sleep,但它不適用於Tkinter(正如你可能已經知道的那樣)。
我認爲問題在於使用root.after()
,但我真的不知道任何其他方式來移動一個對象無限期的時間。
可能重複的[代碼在TKinter中的python GUI中的計時器](http://stackoverflow.com/questions/2400262/code-a-timer-in-a-python-gui-in-tkinter) – msw 2011-06-13 01:52:56
I想要收回我的近距離投票,但不能。哎呀。 – msw 2011-06-13 02:11:31
這個代碼本身不會讓你的程序變得越來越慢。我發佈了一個答案,解釋了爲什麼你的程序變慢。您在這裏發佈的代碼很好,並且或多或少都可以,假設'self.move'正確調整球對象的座標。 – 2011-06-13 14:57:05