Возможно, ваш главный l oop является проблемой, так как он проверяет exit
(истинно), но тест закрытия окна, кажется, на run
.
while exit: # <-- HERE, should this be "while run"?
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
In В любом случае, вот минимальный пример изменения и остановки таймера.
import pygame
# Window size
WINDOW_WIDTH = 400
WINDOW_HEIGHT = 400
### initialisation
pygame.init()
window = pygame.display.set_mode( ( WINDOW_WIDTH, WINDOW_HEIGHT ) )
pygame.display.set_caption( "Timers" )
# Events
USER_EVENT = pygame.USEREVENT + 1
pygame.time.set_timer( USER_EVENT, 2000 )
event_count = 0
### Main Loop
clock = pygame.time.Clock()
done = False
while not done:
# Handle user-input
for event in pygame.event.get():
if ( event.type == pygame.QUIT ):
done = True
elif ( event.type == USER_EVENT ):
print( "USER-EVENT" )
event_count += 1
if ( event_count < 10 ):
pygame.time.set_timer( USER_EVENT, 500 )
else:
print( "Timer Cancelled" )
pygame.time.set_timer( USER_EVENT, 0 )
# Update the window, but not more than 60fps
window.fill( (0,0,0) ) # Paint it black
pygame.display.flip()
# Clamp FPS
clock.tick_busy_loop(60)
pygame.quit()