Tkinter:删除键盘双击防止

时间:2017-01-21 11:41:40

标签: python tkinter

我使用Tkinter编写了一个python版本的Asteroids(https://en.wikipedia.org/wiki/Asteroids_(video_game))。

这是让船舶继续前进的代码:

def move(self, sx=0, sy=0, ms=2):
    try:
        self.root.after_cancel(self.m)
    except AttributeError:
        pass
    ms += 1
    if ms > 30:
        return
    self.parent.move(self.ship, sx, sy)
    self.m = self.root.after(ms, lambda sx1=sx, sy1=sy, millisec=ms: self.move(sx1, sy1, ms))

这里有按下向上箭头时运行的实际功能:

def avanti(self, event):
    self.s = -2.5
    x = self.s * math.sin(math.radians(self.angle)) * -1
    y = self.s * math.cos(math.radians(self.angle))
    self.move(x, y)

当你多次按下UpArrow时,代码效果很好,唯一的问题是,当你按住它时,船只会移动一次,然后会有一个像0.2s一样的小突破,然后开始运行定期提前,直到你释放钥匙。我认为计算机会阻止你双击它然后,当它看到你真正想要的时候,它会消除这种预防。

首次按下后是否有办法删除此块?

编辑:你可以通过进入键盘 - >实际上改变整个计算的输入延迟。键入延迟但我想要做的是删除python程序上的延迟

1 个答案:

答案 0 :(得分:1)

您可以使用<Up>设置move_up = True<KeyRelease-Up>设置move_up = False,然后您可以使用after运行将检查{{1}的函数移动对象。

工作示例 - 来自其他问题的代码(关于移动平台)

move_up