#!/usr/bin python #-*-coding:utf-8 -*- import wx import time #import winsound class ClockFrame(wx.Frame): def __init__(self,parent,id): wx.Frame.__init__(self,parent,id,'Clock',size=(260,130)) self.SetBackgroundColour('White') self.initialTime() self.createTextCtrl() self.createButton() self.bindEvent() self.createTimer() self.clocktimer = None def initialTime(self): self.filename = 'init' file = open(self.filename,'r') self.clocktime = file.readlines()[0] file.close() def createTextCtrl(self): self.cur_time = wx.StaticText(self,label=u'当前时间:',pos=(0,0)) w,self.h = self.cur_time.GetClientSize() self.time_label = wx.StaticText(self,pos=(w,0)) self.conf_label = wx.StaticText(self,label=u'设置闹钟时间:',pos=(0,2*self.h)) w = self.conf_label.GetClientSize()[0] self.set_time = wx.TextCtrl(self,pos=(w+5,2*self.h)) w += self.set_time.GetClientSize()[0] self.set_time.SetValue(self.clocktime) def createButton(self): self.button = wx.Button(self,label=u'确定',pos=(0,4*self.h)) self.stop_btn = wx.Button(self,label=u'停止',pos=(80,4*self.h)) self.reset_btn = wx.Button(self,label=u'重设',pos=(160,4*self.h)) def bindEvent(self): self.button.Bind(wx.EVT_BUTTON,self.OnOK) self.stop_btn.Bind(wx.EVT_BUTTON,self.OnStop) self.reset_btn.Bind(wx.EVT_BUTTON,self.OnReset) self.Bind(wx.EVT_CLOSE,self.OnClose) def createTimer(self): self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER,self.OnRefresh,self.timer) self.timer.Start(1000) def OnRefresh(self,event): t = time.localtime(time.time()) self.st =time.strftime("%H:%M:%S",t) self.time_label.SetLabel(self.st) def OnOK(self,event): self.set_time.SetEditable(False) self.clocktime = self.set_time.GetValue() self.setclocktime2file() self.clocktimer = wx.Timer(self) self.Bind(wx.EVT_TIMER,self.OnClock,self.clocktimer) self.clocktimer.Start(1000) def setclocktime2file(self): file = open(self.filename,'w') file.write(self.set_time.GetValue()) file.close() # def OnClock(self,event): # if self.st == self.clocktime : # self.clocktimer.Stop() # for i in range(20): # winsound.Beep(1000,200) def OnClock(self,event): if self.st == self.clocktime : #self.clocktimer.Stop() self.sound = wx.Sound('clock.wav') self.sound.Play() def OnStop(self,event): if self.sound.IsOk(): self.sound.Stop() def OnReset(self,event): if not self.set_time.IsEditable(): self.set_time.SetEditable(True) def OnClose(self,event): self.timer.Stop() if self.clocktimer: self.clocktimer.Stop() self.Destroy() if __name__ == '__main__': app = wx.PySimpleApp() frame = ClockFrame(parent=None,id=-1) frame.Show() app.MainLoop()
开发工具:python2.7+wxpython2.8.12.0
效果图: