您好我正在构建一个简单的MP3播放器。我现在拥有它,所以当我启用该功能时,它播放声音很好,但gui在等待声音文件完成时暂时冻结。我希望能够在播放文件时点击停止,退出等。有什么建议吗?
def Play():
soundfile = 'test.wav'
pygame.mixer.music.load(soundfile)
pygame.mixer.music.play(0)
events = pygame.event.get()
while pygame.mixer.music.get_busy():
for event in events:
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.Q:
sys.exit()
elif event.type == pygame.MOUSEMOTION:
print "mouse at (%d, %d)" % event.pos
答案 0 :(得分:0)
当没有调用pygame.event.get()时,游戏窗口将冻结。由于您在while循环之外调用pygame.event.get(),因此窗口事件队列只会被刷新一次。简单的解决方案是直接用pygame.event.get()直接替换event变量,以便在get_busy()返回true时连续调用它。
通常对于这些情况,更好的解决方案是进行一些重构,你可以在程序中集中调用pygame.event.get(),而不是调用一个名为Play()的函数来处理事件队列,你改为使用一个名为handlePlayForOneFrame(list_of_relevant_events_this_frame)的函数。