Я написал небольшое приложение Python, в котором я использую PyGame для отображения простой графики.
У меня есть несколько простой цикл PyGame, идущий в основе моего приложения, например:
stopEvent = Event()
# Just imagine that this eventually sets the stopEvent
# as soon as the program is finished with its task.
disp = SortDisplay(algorithm, stopEvent)
def update():
""" Update loop; updates the screen every few seconds. """
while True:
stopEvent.wait(options.delay)
disp.update()
if stopEvent.isSet():
break
disp.step()
t = Thread(target=update)
t.start()
while not stopEvent.isSet():
for event in pygame.event.get():
if event.type == pygame.QUIT:
stopEvent.set()
Он отлично работает и при нормальном завершении программы; если окно PyGame закрывается, приложение закрывается; если приложение завершает свою задачу, оно закрывается.
Проблема, с которой я столкнулся, заключается в том, что если я Ctrl - C в консоли Python, приложение выдает KeyboardInterrupt
, но продолжает работать.
Таким образом, возникает вопрос: что я сделал не так в цикле обновления и как исправить это, чтобы KeyboardInterrupt
прекратил работу приложения?