按下 tkinter 按钮时如何播放声音?
Posted
技术标签:
【中文标题】按下 tkinter 按钮时如何播放声音?【英文标题】:How can I play a sound when a tkinter button is pushed? 【发布时间】:2015-05-01 23:34:49 【问题描述】:我正在为 Windows PC 构建一个程序,它包含很多按钮并且看起来很简单。所以我想知道,当你按下按钮(使用 tkinter)时,我可以做到这一点,我可以播放声音来让程序活跃一点吗?请记住我正在学习,所以请稍微降低一点。
【问题讨论】:
【参考方案1】:您也可以使用pygame。尽管比某些仅用于播放音乐的库慢,但它是跨平台的。
这是在基于 Tkinter 的应用程序中使用它的示例:
import tkinter as tk
from pygame import mixer
mixer.init()
def play_music():
mixer.music.load("sample.ogg")
mixer.music.play()
root = tk.Tk()
tk.Button(root, text="Play music", command=play_music).pack()
root.mainloop()
请务必牢记支持哪些声音格式。来自文档:
-
pygame.mixer docs:
声音可以从 OGG 音频文件或未压缩的 WAV 加载。
-
pygame.music docs:
请注意,MP3 支持是有限的。在某些系统上,不受支持的格式可能会使程序崩溃,例如Debian Linux。考虑改用 OGG。
【讨论】:
正确。您不必为此导入 all of pygame。有好几兆图形功能永远不会被触及。您可以只导入所需的混音器组件from pygame import mixer
,然后将所有命令从pygame.mixer.init()
更改为简单地读取mixer.init()
@Doyousketch2,谢谢你的回复。事实上,如果我们只需要pygame.mixer
,就没有必要从pygame
导入所有模块。编辑了答案。【参考方案2】:
随便用
import os
os.system("play sound.mp3")
【讨论】:
【参考方案3】:假设您的文件是 WAV:
from tkinter import *
from winsound import *
root = Tk() # create tkinter window
play = lambda: PlaySound('Sound.wav', SND_FILENAME)
button = Button(root, text = 'Play', command = play)
button.pack()
root.mainloop()
假设您的文件是 MP3:
from Tkinter import *
import mp3play
root = Tk() # create tkinter window
f = mp3play.load('Sound.mp3'); play = lambda: f.play()
button = Button(root, text = 'Play', command = play)
button.pack()
root.mainloop()
【讨论】:
mp3play 是否包含在默认的 python 库中,还是我必须 dl 它? 它在我的操作系统上不起作用,是我尝试在我的Linux系统中运行它时引发的错误 @RogerAlmengor 当然,它被提出了,因为 win 声音(和 mp3play,也是)仅适用于 Windows,它们不是跨平台的。为了让我的应用在更多操作系统上运行,我使用了 Pygame。【参考方案4】:您首先需要将鼠标在图像上的点击与偶数处理程序联系起来,然后简单地定义一个 on_click 函数:
def on_click(event):
winsound.Beep('frequency', 'duration')
Here你可以找到更多关于在python中播放声音的信息。
【讨论】:
以上是关于按下 tkinter 按钮时如何播放声音?的主要内容,如果未能解决你的问题,请参考以下文章