2

我刚开始使用带有 GUI 界面的 python。我一直在一个简单的计时器程序上试验 TKinter。我被卡住了,因为我想用警报播放一首歌,但找不到解决方案。我正在研究 Linux mint。我有一个消息窗口,时间到了就会出现,我想随着窗口一起启动音频,当你退出窗口时,音频停止。我的代码看起来像这样。

from Tkinter import *
import tkMessageBox


def messageWindow():
    win = Toplevel()
    b = Button(win, text='Times Up!',
        bg="yellow", fg="green",
        activebackground="purple", activeforeground="white",
        command=quit)
    b.pack(ipadx=root.winfo_screenwidth()/2,
        ipady=root.winfo_screenheight()/2)

    root.mainloop()

def alert():
    #this is were i would a call the function to play mp3
    messageWindow()
    quit()

def start():
    root.after(scale.get() * 1000, alert)

root = Tk()

minutes = Label(root, text ="Minutes:  ")
minutes.grid(row=0, column=0)

scale = Scale(root, from_=1, to=60, orient=HORIZONTAL, length=450)
scale.grid(row=0, column=1) 

button = Button(root,text= "Start Timing", command=start)
button.grid(row=1, column=1, pady=5, sticky=E)

root.mainloop()
4

2 回答 2

4

pygame包括执行此操作的功能。我不知道这是否是最好的方法,但它肯定是一种方法。

import pygame

pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("desert_rustle.wav")

sounda.play()
sounda.stop()

取自此处的示例

于 2013-05-16T17:36:26.343 回答
0

似乎您已经对答案感到满意(诚然,您在 3 年前接受了这个答案!),但您可以考虑为未来的项目提供另一种选择:使用import winsound. Pygame 对我不起作用(可能是因为我使用的是 python 3),但更重要的是,winsound 一开始可能会让音频更容易播放,据我所知,它对你的目的很有效. 您需要使用 '.wav' 文件(而不是像 mp3 之类的文件),但如果您查找'online converter'则很容易转换为该格式。

import winsound

winsound.PlaySound('The Countdown.wav', winsound.SND_ASYNC)

以防万一您确实需要提前停止音频,您不能使用 stop()。相反,使用

winsound.PlaySound(None, 0)

也许 pyglet 无论如何都会这样做,但最棒的winsound.SYND_ASYNC是它将与 tkinter 一起运行,而不是暂停程序/等待程序完成后再执行。

于 2017-02-28T21:08:34.367 回答