2014-10-17 3 views
0

우리는 현재 시간이 사용자가 설정 한 알람 시간과 같을 때 TKinter를 사용하여 "ALARM"이라는 단어를 표시하는 파이썬으로 자명종 프로그램을 만들었습니다. 이제 알람 소리를 프로그램에 추가하려고하므로 현재 시간이 설정된 알람 시간에 도달하면 사운드가 재생됩니다. 현재 시간이 알람 시간에 도달하면 이상한 이유로 알람 소리가 한 번에 약 7 회 열리고 재생 된 다음 종료됩니다. 우리는 사운드 파일을 한 번 재생하기 위해 여러 가지 방법을 시도했지만 아무 것도 효과가 없었습니다. 너희들에게 제안이 전혀 없니? 필요한 경우 자세한 정보/스크린 샷을 게시 할 수 있습니다. :) 지금까지라즈베리 파이와 파이썬 (TKinter와 Omxplayer)

코드 :

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

당신은 매 초마다 한 번만 기회가 있음을 알 때마다 매 10ms마다 폴링을합니까? –

답변

0

omxplayer 모르지만, 그것은 소리를 재생 후 종료 경우처럼이 끝날 때까지, 당신은 단순히 기다릴 수 : 왜

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

답장을 보내 주셔서 감사합니다 :) 나는 그것을 시도하고 아무런 소리가 실제로 재생 제외하고 다행히 한 번 playProcess 달렸어요. – Mel