我是一个python小白,求帮助:自己编写了一个倒计时器,用了wx.Timer(),但不运行,也没有提示错误,求高手帮我看看一下,谢谢了。
import wximport time
class MyFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'秒倒计时',size=(300,160))#设定窗体
self.seconds=0
panel=wx.Panel(self)#设定板面
self.tim=wx.StaticText(panel,label='0',size=(300,50),style=wx.ALIGN_CENTRE)
self.tim.SetBackgroundColour('black') #设置静态文本的背景颜色
self.tim.SetForegroundColour('green') #设置静态文本的前景色
font=wx.Font(40,wx.DECORATIVE,wx.DEFAULT,wx.NORMAL) #设定文本的字体
self.tim.SetFont(font)
self.st=wx.StaticText(panel,label='时间设定(秒):')
self.st1=wx.TextCtrl(panel,style=wx.TE_PROCESS_ENTER)
self.st1.Bind(wx.EVT_TEXT_ENTER,self.enter)#文本框的事件
self.bott=wx.Button(panel,label='开始')
self.bott1=wx.Button(panel,label='暂停')
self.bott.Bind(wx.EVT_BUTTON,self.Nostart)
self.bott1.Bind(wx.EVT_BUTTON, self.Nostop)
self.timer=wx.Timer(self)#设定定时器
self.timer.Bind(wx.EVT_TIMER,self.OnTimer)#绑定定时器
hsize = wx.BoxSizer(wx.HORIZONTAL) #横向版面布局
hsize.Add(self.st, proportion=0, flag=wx.ALL, border=5)
hsize.Add(self.st1, proportion=0, flag=wx.ALL, border=5)
hsize1 = wx.BoxSizer(wx.HORIZONTAL)
hsize1.Add(self.bott, proportion=0, flag=wx.ALIGN_CENTRE, border=5)
hsize1.Add(self.bott1, proportion=0, flag=wx.ALIGN_CENTRE, border=5)
vsize = wx.BoxSizer(wx.VERTICAL)#纵向版面布局
vsize.Add(self.tim, proportion=0, flag=wx.EXPAND, border=0)
vsize.Add(hsize, proportion=0, flag=wx.EXPAND, border=5)
vsize.Add(hsize1, proportion=0, flag=wx.ALIGN_CENTRE, border=5)
panel.SetSizer(vsize)#启动板面布局
def enter(self,event):#文本框事件
self.seconds=int(self.st1.GetValue())*1000
mm=int((self.seconds/1000)//60)
ss=int((self.seconds/1000)%60)
xx=int((self.seconds/1000)%10)
text_time='{:02d}:{:02d}.{:02d}'.format(mm,ss,xx)
self.tim.SetLabel(text_time)
def OnTimer(self,event): 定时器事件
self.seconds-=1
mm = int((self.seconds / 1000) // 60)
ss = int((self.seconds / 1000) % 60)
xx = int((self.seconds / 1000) % 10)
text_time = '{:02d}:{:02d}.{:02d}'.format(mm, ss, xx)
self.tim.SetLabel(text_time)
def Nostart(self,event):
self.timer.Start(1000)#每1秒启动一次定时器
def Nostop(self,event):
self.timer.Stop()#停止定时器
if __name__ == '__main__':
app=wx.App()
frame = MyFrame(parent=None, id=-1)
frame.Show()
app.MainLoop()