我有一個函數contMove(),當我點擊一個按鈕時,它會不斷地移動一個對象穿過tkinter窗口。但是,如果我單擊不止一次運行此函數的按鈕,它會加速,因爲第一個子例程尚未關閉,因爲我希望它連續運行,並且它們運行在彼此的頂部,加快了運動速度。我不希望它加速,所以我想要進行檢查,測試X或Y座標是否正在改變,增加的速度超過了我想要的速度,如果是的話,殺死子程序。這看起來似乎是一件普通的事情,但我能找到的有關時間模塊的一切都是關於日期和時鐘時間,或者是使用time.sleep,但我無法使用它,因爲我無法阻止移動。如果對不起,我搞砸了我的代碼的格式,當我把它放在這裏如何在z秒後x> x + y:?
def contMove(moving):
global a
global b
global X, Y
if moving:
a = a + X
b = b + Y
mover.place(x = a, y = b)
a, b, X, Y = edgeBounce(a, b, X, Y)
mover.place(x = a, y = b)
#would be here
mover.after(17, lambda: contMove(moving))
else:
return
更改您到'通話after'的樣子,看看是否它有助於:'移動者。(17,移動,移動)'。 –
我很困惑,你能把它放進去嗎?我真的不知道你的意思 – Feesih0ps
刪除'mover.after(17,lambda:contMove(moving))',並用'mover.after(17,contMove,moving)'替換它。 –