有没有办法使Python Tk画布中的移动更加平滑?

有没有办法使Python Tk画布中的移动更加平滑?,python,tkinter,tk,Python,Tkinter,Tk,我正在屏幕上移动一个点,但当改变方向时,它似乎会暂停(停止移动)一段时间 有没有更好的方法使运动更平稳,或者只是停止改变方向的延迟 以下是我用来移动它的方法: def keypress(event): key = (event.keysym) if key == "w": canvas.move(player,0,-20) if key == "a": canvas.move(player,-20,0) if key == "

我正在屏幕上移动一个点,但当改变方向时,它似乎会暂停(停止移动)一段时间

有没有更好的方法使运动更平稳,或者只是停止改变方向的延迟

以下是我用来移动它的方法:

def keypress(event):
    key = (event.keysym)

    if key == "w":
        canvas.move(player,0,-20)

    if key == "a":
        canvas.move(player,-20,0)

    if key == "s":
        canvas.move(player,0,20)

    if key == "d":
        canvas.move(player,20,0)

canvas.bind_all("<Key>", keypress)
def按键(事件):
key=(event.keysym)
如果键==“w”:
画布移动(玩家,0,-20)
如果键==“a”:
画布移动(玩家,-20,0)
如果键==“s”:
画布移动(玩家,0,20)
如果键==“d”:
画布移动(玩家,20,0)
canvas.bind_all(“,按键)

命名常量使更改和实验更容易,尤其是在代码中的多个位置使用同一常量时。在下面的代码中,您只需按照Bryan的建议,将
20
的一个副本更改为实验

distance = 20
movements = {
    'w': (0, -distance),
    'a': (-distance, 0),
    's': (0, distance),
    'd': (distance, 0),
    }

def keypress(event):
    key = (event.keysym).lower()
    canvas.move(player, *movements[key])

在写这篇文章时,我利用这个机会展示了如何使用dict来替换多个条件句,方法是将公共代码从不断变化的代码中分解出来。move调用中的*语法将元组分为两个参数。

您是否尝试过以较小的增量移动元组?你每次移动都会跳20个像素。