我正在使用 .after 调用一个在 GUI 内移动图像的函数。当我运行代码并调用函数“myFunc”时,图像确实移动,但它是瞬时发生的。它应该逐渐在屏幕上移动。我不确定为什么会发生这种情况。
def movRight():
global img
global imgx
canvas.move(imgx,20,0)
return
def myFunc():
moveController(1,20)
return
def moveController(extruder, position):
global e1current
global e2current
global e3current
global e4current
if extruder == 1:
while position > e1current:
print("moving")
e1current+=1
main.after(500,movRight)
return
最佳答案
.after 不会阻止循环的执行。它更像是生成一个单独的线程,该线程在 500(在您的情况下)毫秒后开始执行。换句话说,.after 不会阻塞循环500ms,调用movRight,然后继续循环。看一下这个例子:
import tkinter as tk
def print_hi():
print("hi")
root = tk.Tk()
for i in range(5):
root.after(1000, print_hi)
print("loop done")
root.mainloop()
这会输出“loop done”,然后,大约一秒钟后,它会打印“hi”五次。
关于python - .在没有按我预期的方式运行之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704043/