Выход по клику больше не работает после использования Clearscreen

Я работаю над графической программой Python Turtle и пытаюсь использовать метод exitonclick, чтобы закрыть окно при нажатии на него. Однако, похоже, это не работает.

from turtle import Turtle, Screen

rem = Turtle()
screen = Screen()


rem.fd(70)

def clear():
    screen.clearscreen()

screen.listen()

screen.onkey(fun=clear,key = "c")

screen.exitonclick()

Когда я запускаю его и пытаюсь выйти из программы, щелкнув по экрану, она работает нормально и завершает работу, но когда я нажимаю c и очищаю экран, то, если я попытаюсь выйти, щелкнув мышью, ничего не произойдет.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

screen.clearscreen() полностью сбрасывает окно. Это включает в себя удаление всех изменений, внесенных с помощью exitonclick. Самое простое решение — просто снова вызвать exitonclick в вашей пользовательской функции:

from turtle import Turtle, Screen

rem = Turtle()
screen = Screen()

rem.fd(70)

def clear():
    screen.clearscreen()
    screen.exitonclick()

screen.listen()

screen.onkey(fun=clear,key = "c")

screen.exitonclick()

Другие вопросы по теме