Python 树莓皮和蟒蛇(TKinter和Omxplayer)

Python 树莓皮和蟒蛇(TKinter和Omxplayer),python,audio,tkinter,raspberry-pi,alarm,Python,Audio,Tkinter,Raspberry Pi,Alarm,我们用python制作了一个闹钟程序,当当前时间等于用户设置的闹钟时间时,使用TKinter显示单词“alarm”。现在,我们正在尝试向程序中添加警报声音,以便在当前时间达到警报时间设置时播放声音。 出于某种奇怪的原因,当当前时间到达报警时间时,报警声音会打开并同时播放大约7次,然后退出。 我们尝试了一些不同的方法,让它只播放一次声音文件,但没有任何效果。你们有什么建议吗?如果需要,我可以发布更具体的信息/屏幕截图。:) 迄今为止的代码: import time import subproces

我们用python制作了一个闹钟程序,当当前时间等于用户设置的闹钟时间时,使用TKinter显示单词“alarm”。现在,我们正在尝试向程序中添加警报声音,以便在当前时间达到警报时间设置时播放声音。 出于某种奇怪的原因,当当前时间到达报警时间时,报警声音会打开并同时播放大约7次,然后退出。 我们尝试了一些不同的方法,让它只播放一次声音文件,但没有任何效果。你们有什么建议吗?如果需要,我可以发布更具体的信息/屏幕截图。:)

迄今为止的代码:

import time
import subprocess

#GUI Setup
from Tkinter import *
alarm_window = Tk()
alarm_window.configure(bg = 'lightblue')
alarm_window.title('Alarm Clock!')

display = Label(alarm_window, font = ('Arial', 25), bg = 'lightblue', width = 13, height = 1, borderwidth = 2)
display.grid(row = 1, column = 1, columnspan = 6)

current_time = time.strftime("%H:%M:%S")

def refresh_time():
    global current_time
    current_time = time.strftime("%H:%M:%S")

    if current_time == times.get():
        alarm_window.configure(bg='red')
        timelabel.configure(bg='red')
        alarmdisplay = Label(alarm_window, font = ('Arial', 25), text = 'ALARM', bg='red', width = 13, height = 1, borderwidth = 2,)
        alarmdisplay.grid(row = 2, column = 1, columnspan = 6)

        playProcess = subprocess.Popen(['omxplayer', '/home/pi/Digital Alarm.mp3?dl=0'])

    display.config(text=current_time)
    display.after(10, refresh_time)

timelabel = Label(alarm_window, text = 'Enter H:M:S', bg = 'lightblue')
timelabel.grid(row = 2, column = 1)
times = Entry(alarm_window, width = 10, bg = 'lightgrey', justify = CENTER)
times.grid(row = 2, column = 2, columnspan = 5)

times.focus()

refresh_time()
alarm_window.mainloop()

不知道
omxplayer
,但是如果它在播放声音后退出,您可以简单地等待它结束,就像:

playProcess = subprocess.Popen(['omxplayer', '/home/pi/Digital Alarm.mp3?dl=0'])
playProcess.wait()

当你知道时间每秒只可能出现一次时,为什么你要每10毫秒进行一次轮询?谢谢你的回答:)我试过了,幸好它运行了一次播放过程,除了没有实际播放的声音。