Я пытаюсь использовать python 3 графических изображений черепахи для создания чего-то вроде программного обеспечения для презентаций: нарисуйте что-нибудь, сделайте паузу для нажатия клавиши, чтобы докладчик мог объяснить, а затем нарисуйте следующую вещь.
Вот один из них Решение, которое я пробовал (это не работает):
import turtle
import time
paused = False
def unpause():
print("unpause() called")
global paused
paused = False
def pause():
global paused
paused = True
while paused:
time.sleep(0.1)
t = turtle.Turtle()
# set up listener
t.screen.listen()
t.screen.onkeypress(unpause)
# draw something
t.hideturtle()
t.pensize(5)
t.speed(1)
t.pu()
t.goto(-300,-300)
t.pd()
t.goto(-300, 300)
# pause until key is pressed
pause()
# draw some more
t.pu()
t.goto(300,-300)
t.pd()
t.goto(300, 300)
t.screen.mainloop()
Проблема в том, что спящий вызов l oop полностью блокирует обнаружение нажатия клавиши, даже когда я использую некоторое время l oop очень коротких (100 мс) снов.
Если я нажимаю клавишу во время рисования первой строки, я вижу "unpause () call" в моей консоли, поэтому я знаю, что привязка клавиш активна.
Почему не обнаруживается нажатие клавиши? Я не знаю насчет внутренних функций, но я думал, что нажатие клавиши будет записано где-нибудь в буфере, и во время перерыва между вызовами в режиме ожидания слушатель будет читать буфер и сбрасывать глобальную переменную paused
. Этого не происходит.
Есть ли другой способ реализовать это?
Это в системе Debian Linux.