Если щелкнуть экран во время печати чисел в следующей программе, время печати станет ошибочным c. Я пытаюсь понять, почему.
Мне удалось решить проблему с помощью timer_id = screen.getcanvas().after(1000, __continue_printing)
и after_cancel
, но в моем проекте сохраняется то же поведение из первого примера, несмотря на использование after()
подход.
Если я могу понять, почему первый пример ведет себя так, как он, я верю, что это поможет мне решить мою проблему.
Может кто-нибудь объяснить, пожалуйста, время ошибки c? Есть ли как-то несколько таймеров, которые могут быть sh друг с другом, может быть?
import turtle
def get_nums():
global nums, nums_iter
nums = list(range(11))
nums_iter = iter(nums)
def start_printing():
global printing
printing = True
__continue_printing()
def stop_printing():
global timer_id
global printing
printing = False
def __continue_printing():
global printing, timer_id
if printing:
try:
next_num = next(nums_iter)
print(next_num)
turtle.ontimer(__continue_printing, 1000)
except StopIteration:
printing = False
def click(x, y):
stop_printing()
get_nums()
start_printing()
screen = turtle.Screen()
screen.setup(500, 500, 500, 500)
screen.listen()
screen.onclick(click)
get_nums()
start_printing()
turtle.done()