Python 2.7 使用python 2.7按钮播放mp3文件-TKinter
您好,我正在尝试创建一个按钮,使用TKinter播放mp3文件,到目前为止,我有以下代码。我无法播放mp3文件Python 2.7 使用python 2.7按钮播放mp3文件-TKinter,python-2.7,button,audio,tkinter,Python 2.7,Button,Audio,Tkinter,您好,我正在尝试创建一个按钮,使用TKinter播放mp3文件,到目前为止,我有以下代码。我无法播放mp3文件 from Tkinter import * import os import winsound app = Frame(root) app.pack(side='bottom') button1 = Button(app, text="Enter Program", command=winsound.PlaySound('music.mp3',winsound
from Tkinter import *
import os
import winsound
app = Frame(root)
app.pack(side='bottom')
button1 = Button(app, text="Enter Program", command=winsound.PlaySound('music.mp3',winsound.SND_FILENAME))
button1.pack()
谢谢您有两个错误:
命令
错误:当您传递如下参数时:
Button(..., command=winsound.PlaySound(...))
您正在调用PlaySound
并使用其返回值(默认为None
),因此您正在传递command=None
。使用lambda
:
Button(..., command=lambda: winsound.PlaySound(...))
winsound
不是用来播放mp3
s的,而是用来播放wav
s的。使用其他库,可以找到建议您可以使用pyglet library播放mp3文件,但也应该安装了
avbin
library。()
另一个问题是,tkinter有自己的主循环,pyglet有自己的主循环。所以你应该使用线程。此代码可能会给您一个想法:
from Tkinter import *
from threading import Thread
import pyglet
root = Tk()
app = Frame(root)
app.pack(side='bottom')
player = pyglet.media.Player()
music_file = pyglet.media.load('foo.mp3')
def startPlaying():
player.queue(music_file)
player.play()
pyglet.app.run()
def playSound():
global sound_thread
sound_thread = Thread(target=startPlaying)
sound_thread.start()
button1 = Button(app, text="Enter Program", command=playSound)
button1.pack()
root.mainloop()
pyglet.app.exit()
所以问题是什么?我不能让它播放文件谢谢你帮了我很多忙