我正在尝试编写一个可以播放MP3的程序。该程序还将具有GUI。为了让两者同时发生,我正在实现线程。但是,我遇到了一个问题。每当我运行程序时,一切都会正常执行,除了没有声音出来。没有错误,什么都没有。就好像跳过了命令一样。通过消除过程,我相信我发现问题是由我在线程(self)内运行程序的音乐播放部分时引起的。MP.controls.play()).
有没有人熟悉其他模块,这些模块将允许我在线程中播放音乐?或者有人知道可能导致问题的原因吗?
法典:
import GUIThread as GUIT # GUIThread is just an interface I made for the threading module, just act as if it was threading.
from win32com.client import Dispatch
class Test :
def __init__ (self) :
self.Dir = r'song.mp3'
self.Thread = GUIT.Thread(self, func=self.play_song, loop=False)
self.MP = Dispatch('WMPlayer.OCX')
song = self.MP.newMedia(self.Dir)
self.MP.currentPlaylist.appendItem(song)
def start (self) :
# Starts the thread.
# Equivalent to :
# t = threading.Thread(target=self.play_song)
# t.start()
self.Thread.start()
def play_song (self) :
# This whole function is done within the thread.
if self.Dir != None :
print self.Dir
self.MP.controls.play()
def protocol (self, val0, val1) :
# Ignore this it's unrelated
pass
T = Test()
T.start()
这是在Windows 7中,顺便说一句。
编辑:另外,我将使用Tkinter作为GUI工具包。
你可以试试pymedia或pyglet。我知道pygame也有mp3支持。