У меня есть функция, запуск которой занимает около 10 секунд. Я хочу, чтобы он запускался снова и снова, пока я не нажму определенную клавишу, а затем завершу функцию.
Я мог бы использовать модуль Python keyboard
, чтобы определить, нажата ли клавиша, но если я нажму клавишу во время работы функции, он этого не обнаружит. Есть ли функция, которая помещает нажатые клавиши в очередь, которую я мог бы выгружать каждый раз, когда функция завершается?
Я пробовал этот код:
import pygame
import time
screen = pygame.display.set_mode((500, 500))
pygame.init()
def f():
time.sleep(10)
print('done')
running = True
while running:
f()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
running = False
но это работает только при нажатии q в окне pygame
Вы не сказали, используете ли вы Windows или Linux. В Windows вы можете использовать kbhit
import msvcrt
import time
print("hit any key to continue")
while not msvcrt.kbhit():
time.sleep(1.0)
print("hitted")