2013-05-16 19 views
1

我剛剛開始使用python與GUI界面。我一直在用簡單的定時器程序對TKinter進行試驗。我被卡住了,因爲我想用警報播放歌曲,但一直沒能找到解決方案。我正在研究Linux mint。我有一個消息窗口,當時間到了時出現,我想隨着窗口開始播放音頻,當你退出窗口時,音頻停止。我的代碼看起來像這樣。如何在python中播放音頻文件?

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() 

回答

3

pygame包括這樣做的功能。我不知道這是否是最好的方式,但它肯定是一種方式。從here

+0

謝謝,這將做我所需要的 – chadybear

0

採取

import pygame 

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

sounda.play() 
sounda.stop() 

例如好像你一個答案已經幸福(你接受了3年前,誠然!),但這裏是你可以考慮爲以後的項目替代: 使用import winsound 。 Pygame沒有爲我工作(可能是因爲我使用的是python 3),但更重要的是,winsound可能會使音頻更簡單地發揮作用,並且就我所知,它對您的目的會很有效。您需要使用'.wav'文件(與mp3類似),但如果您查看'在線轉換器',則很容易轉換爲該格式。

import winsound 

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

萬一你需要提前停止音頻,您不能使用的stop()。相反,使用

winsound.PlaySound(None, 0) 

也許pyglet做到這一點,無論如何,但有什麼了不起winsound.SYND_ASYNC是,它會結合運行與Tkinter的,而不是暫停程序/等到程序完成的,來執行。