Закрыть python Черепаха модуль игры при нажатии клавиши - PullRequest
0 голосов
/ 10 февраля 2020

Я пытался сделать игру Snake, используя модуль Turtle в Python3. Я хочу, чтобы программа закрывалась при нажатии клавиши Es c дважды. Вот что я пробовал до сих пор, но я не могу заставить его работать (я ранее импортировал модуль sys):

def exitprogram():
    sys.exit()

def close():
    close = turtle.Turtle()
    close.speed(0)
    close.color("white")
    close.penup()
    close.hideturtle()
    close.goto(0,0)
    close.write("Press ESC again to exit", align="center", font = ("Courier", 24, "normal"))
    window.listen()
    window.onkeypress(exitprogram, "Escape")

window.listen()
window.onkeypress(close, "Escape")
window.mainloop()

Любая помощь будет принята с благодарностью !!

EDIT

Вместо того, чтобы использовать sys.exit (), я использовал window.bye (), и это, казалось, работало очень хорошо. Спасибо!

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Я в целом согласен с @furas (+1), но я бы go упростил, так как некоторые методы, которые вы вызываете, фактически не используются в контексте, в котором они используются:

from turtle import Screen, Turtle

def close():
    window.onkeypress(window.bye, "Escape")
    close = Turtle()
    close.hideturtle()
    # close.color("white")
    close.write("Press ESC again to exit", align="center", font=("Courier", 24, "normal"))

window = Screen()
window.onkeypress(close, "Escape")
window.listen()
window.mainloop()
1 голос
/ 10 февраля 2020

Код работает для меня, если я добавлю mainloop(), который получает события клавиатуры / мыши из системы и отправляет в окно черепахи. Вы также можете использовать window.bye() для выхода mainloop()

import turtle

def exitprogram():
    window.bye()

def close():
    close = turtle.Turtle()
    close.speed(0)
    #close.color("white")
    close.penup()
    close.hideturtle()
    close.goto(0,0)
    close.write("Press ESC again to exit", align="center", font = ("Courier", 24, "normal"))
    window.listen()
    window.onkeypress(exitprogram, "Escape")

window = turtle.Screen()
window.listen()
window.onkeypress(close, "Escape")
window.mainloop()
...