尝试绑定 p 以暂停和取消暂停我的 Tkinter 游戏

Trying to bind p to pause and unpause my Tkinter game

我目前正在 Tkinter 中制作 Snake,我想绑定 p 按钮来暂停我的贪吃蛇游戏,当用户再次按下 p 时,它应该会取消暂停。

这是一些示例代码


def pause(is_paused):
            global paused
            paused = is_paused
        
            if (paused == True):
                paused = False

            else:
                # Somehow pause my game                                   
                paused = True
def snakeMove():
   ... #Lines of code to move snake
   master.after(50, snakeMove) # snakeMove is the function for moving the snake

canvas.bind("<p>", pause)
global paused
paused = False

master.mainloop()

目前我可以让游戏暂停,但不能取消暂停。

此代码段将暂停并释放函数 snakeMove 中的任何 activity。 解除暂停后需要重新启动after

你还需要确保 canvas 有焦点,否则按键输入将不起作用。

bound = None
paused = False

def pause(event):
    global paused
    paused = (paused == False)
    if not paused:
        print("Unpaused")
        bound = master.after(50, snakeMove)

def snakeMove():
    global bound
    if paused:
        master.after_cancel(bound)
        print("Paused")
    else:
        bound = master.after(50, snakeMove) # snakeMove is the function for moving the snake

canvas.bind("<Key-p>", pause)
bound = master.after(150, snakeMove)

canvas.focus_force()
master.mainloop()