python - .在没有按我预期的方式运行之后

标签 python python-3.x tkinter

我正在使用 .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/

相关文章:

python - 如何获取已集成到 CL 范围内的更改?

python - 如何在 turtle 屏幕上输出变量?

python - 检查单词之间的编辑次数

python-3.x - 如何确定我的Linux机器上安装了哪个版本的python3 tkinter?

python - 将函数的结果打印到 tkinter 消息框中?

python - 无法安装 pyOpenSSL

python - 无法在 Linux 上使用 pip 安装 Ropper

python-3.x - 正则表达式 - 计算单词中大写字母的数量

python - 关键事件似乎卡在使用 `turtle.onkey(function(), "键")`

python - 如何在 tkinter 日历中创建点击功能?