I am currently making Snake in Tkinter, I want to bind the p button to pause my snake game, and when the user presses p again, it should unpause.
Here is some example code
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()
At the moment I can get the game to pause, but not unpause.
CodePudding user response:
This code snippet will pause and release any activity in function snakeMove
.
It is necessary to restart after
when released from pause.
Also you need to make sure canvas has the focus or else key input will not work.
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()