我想用python(不使用任何花哨的GUI,只是基本的命令行)创建MP3Player。您可以输入命令,如打印所有歌曲的“播放列表”或播放播放列表中播放指定歌曲的“播放[num]”。我可以在一个线程中完成这一切,但我想要的是创建另一个线程,以便在实际播放音乐的同时可以执行更多命令,如“添加歌曲”或“删除歌曲”(而不是等待音乐完成)。以下是我有一个线程:Python MP3Play与线程
import mp3play, time
clip = mp3play.load(song)
clip.play()
time.sleep(clip.seconds()) #Waits the duration of the song
clip.stop()
#Command line asks for input after this
这工作都很好,很正常,但是当我尝试实施穿入到这一点,就像这样:
import mp3play, time
def play(songname):
clip = mp3play.load(song)
clip.play()
time.sleep(clip.seconds()) #Waits the duration of the song
clip.stop()
#Get user input here
#Check if user inputted command
#User inputed "play"
thread.start_new_thread(play,("some_random_song.mp3",))
它毛刺出来。这一切似乎都很好,直到你通过歌曲中途关闭应用程序并且音乐仍然继续运行。要停止音乐,我必须打开任务管理器并结束任务。于是我想到了有“停止”命令,以及,这不会关闭线程,但它会使用
clip.stop()
我不知道,如果你试图阻止()的ISN剪辑会发生什么没有运行,所以我实现了一个预防系统(布尔运行,检查它是否)。但现在没有什么作品,迄今为止这里是我的代码:
def play(filename):
global clip
clip.play()
time.sleep(clip.seconds())
clip.stop()
playing = False
clip = ""
#Get user input
#blah blah blah command stuff
#User inputted "play"
thread.start_new_thread(play,("some_random_song.mp3",))
playing = True
#Goes back to command line
#User inputted 'stop' this time
if playing:
clip.stop()
playing = False
但是当我尝试运行此,它得到clip.play()的线程,但犯规启动它。我不知道如何解决这个问题,如果可以不用线程就可以做到这一点。提前致谢。
当我键入“玩”它开始播放音乐,但它并没有显示指针“>”要求的下一个命令(即线程被捆绑起来'sleep'ing为mp3play'clip')。难道我做错了什么? –