播放音频文件后,pygame没有响应

时间:2017-04-28 10:53:58

标签: python audio tkinter pygame

我是pygame的新手,而不是一个非常有经验的python程序员,所以希望你能帮忙。我正在尝试使用pygame和tkinter在python上创建自己的音频播放器。所以有我的代码:

from tkinter import *
from tkinter.filedialog import *
import pygame
import sys
from pygame import*
mixer.init()
pygame.mixer.pre_init(44100, -16, 2, 2048)
def play(event):
    mixer.music.load("Chillingmusic.wav")
    mixer.music.play()
    while mixer.music.get_busy():
        time.Clock().tick(10)

def pause(event):
    pygame.mixer.music.pause()
    song.pause()

root=Tk()

txt=Text(root)

m=Menu(root)
root.config(menu=m)

fm=Menu(m)
m.add_cascade(label="File",menu=fm)
fm.add_command(label="Open",command_=open)

but=Button(text=">",bg="lightgreen")
but.grid(row=0,column=0)
but.bind("<Button-1>",play)

but1=Button(text="p",bg="lightblue")
but1.grid(row=0,column=1)
but1.bind("<Button-1>",pause)

root.mainloop()
pygame.quit()

问题是当我开始播放音乐时,使用播放功能播放音频,但在该界面停止响应后,我不能使用我的暂停功能。 我在Windows 10(64位)上使用python 3.6和pygame 1.9.3。

1 个答案:

答案 0 :(得分:2)

在歌曲结束之前,您的play功能将无法完成。这意味着您的程序必须等待它完成,并且在此期间无法执行任何其他操作,使其他所有内容都无法响应。不要使用while循环。

def play(event):
    mixer.music.load("Chillingmusic.wav")
    mixer.music.play()

mixer使用的是另一个主线程以外的线程,因此音乐会播放,您自己的代码可以同时执行。