python实现闹钟定时播放音乐功能
自己写的闹钟,只可以播放wav格式的音频,供大家参考,具体内容如下 Python代码: import time import sys soundFile = 'sound.wav' not_executed = 1 def soundStart(): if sys.platform[:5] == 'linux': import os os.popen2('aplay -q' + soundFile) else: import winsound winsound.PlaySound(soundFile,winsound.SND_FILENAME) while(not_executed): dt = list(time.localtime()) hour = dt[3] minute = dt[4] if hour == 17 and minute == 38: # 下午5点33分的时候开始提示 soundStart() not_executed = 0 winsound 模块提供访问由 Windows 平台提供的基本的声音播放设备。它包含函数和数个常量。 Beep(frequency,duration) PlaySound(sound,flags) MessageBeep([type=MB_OK]) SND_FILENAME SND_ALIAS 例子: import winsound # Play Windows exit sound. winsound.PlaySound("SystemExit",winsound.SND_ALIAS) # Probably play Windows default sound,if any is registered (because # "*" probably isn't the registered name of any sound). winsound.PlaySound("*",winsound.SND_ALIAS) SND_LOOP SND_MEMORY SND_PURGE SND_ASYNC SND_NODEFAULT SND_NOSTOP SND_NOWAIT MB_ICONASTERISK MB_ICONEXCLAMATION MB_ICONHAND MB_ICONQUESTION MB_OK 实例一 import wx from wx.lib.filebrowsebutton import FileBrowseButton class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,title="wx.Sound",size=(500,100)) p = wx.Panel(self) self.fbb = FileBrowseButton(p,labelText="Select WAV file:",fileMask="*.wav") btn = wx.Button(p,-1,"Play") self.Bind(wx.EVT_BUTTON,self.OnPlaySound,btn) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(self.fbb,1,wx.ALIGN_CENTER_VERTICAL) sizer.Add(btn,wx.ALIGN_CENTER_VERTICAL) border = wx.BoxSizer(wx.VERTICAL) border.Add(sizer,wx.EXPAND|wx.ALL,15) p.SetSizer(border) def OnPlaySound(self,evt): filename = self.fbb.GetValue() self.sound = wx.Sound(filename) if self.sound.IsOk(): self.sound.Play(wx.SOUND_ASYNC) else: wx.MessageBox("Invalid sound file","Error") app = wx.PySimpleApp() frm = MyFrame() frm.Show() app.MainLoop() 实例二 import wx import wx.media import os class Panel1(wx.Panel): def __init__(self,parent,id): #self.log = log wx.Panel.__init__(self,style=wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN) # Create some controls try: self.mc = wx.media.MediaCtrl(self,style=wx.SIMPLE_BORDER) except NotImplementedError: self.Destroy() raise loadButton = wx.Button(self,"Load File") self.Bind(wx.EVT_BUTTON,self.onLoadFile,loadButton) playButton = wx.Button(self,self.onPlay,playButton) pauseButton = wx.Button(self,"Pause") self.Bind(wx.EVT_BUTTON,self.onPause,pauseButton) stopButton = wx.Button(self,"Stop") self.Bind(wx.EVT_BUTTON,self.onStop,stopButton) slider = wx.Slider(self,size=wx.Size(300,-1)) self.slider = slider self.Bind(wx.EVT_SLIDER,self.onSeek,slider) self.st_file = wx.StaticText(self,".mid .mp3 .wav .au .avi .mpg",size=(200,-1)) self.st_size = wx.StaticText(self,size=(100,-1)) self.st_len = wx.StaticText(self,-1)) self.st_pos = wx.StaticText(self,-1)) # setup the button/label layout using a sizer sizer = wx.GridBagSizer(5,5) sizer.Add(loadButton,(1,1)) sizer.Add(playButton,(2,1)) sizer.Add(pauseButton,(3,1)) sizer.Add(stopButton,(4,1)) sizer.Add(self.st_file,2)) sizer.Add(self.st_size,2)) sizer.Add(self.st_len,2)) sizer.Add(self.st_pos,2)) sizer.Add(self.mc,(5,1),span=(5,1)) # for .avi .mpg video files self.SetSizer(sizer) self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER,self.onTimer) self.timer.Start(100) def onLoadFile(self,evt): dlg = wx.FileDialog(self,message="Choose a media file",defaultDir=os.getcwd(),defaultFile="",style=wx.OPEN | wx.CHANGE_DIR ) if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() self.doLoadFile(path) dlg.Destroy() def doLoadFile(self,path): if not self.mc.Load(path): wx.MessageBox("Unable to load %s: Unsupported format?" % path,"ERROR",wx.ICON_ERROR | wx.OK) else: folder,filename = os.path.split(path) self.st_file.SetLabel('%s' % filename) self.mc.SetBestFittingSize() self.GetSizer().Layout() self.slider.SetRange(0,self.mc.Length()) self.mc.Play() def onPlay(self,evt): self.mc.Play() def onPause(self,evt): self.mc.Pause() def onStop(self,evt): self.mc.Stop() def onSeek(self,evt): offset = self.slider.GetValue() self.mc.Seek(offset) def onTimer(self,evt): offset = self.mc.Tell() self.slider.SetValue(offset) self.st_size.SetLabel('size: %s ms' % self.mc.Length()) self.st_len.SetLabel('( %d seconds )' % (self.mc.Length()/1000)) self.st_pos.SetLabel('position: %d ms' % offset) app = wx.PySimpleApp() # create a window/frame,no parent,-1 is default ID frame = wx.Frame(None,"play audio and video files",size = (320,350)) # call the derived class Panel1(frame,-1) frame.Show(1) app.MainLoop() 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |