| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1790 人关注过本帖
标题:我是一个python小白,求帮助:自己编写了一个倒计时器,用了wx.Timer(),但不 ...
只看楼主 加入收藏
wangjx236007
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2021-3-2
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:4 
我是一个python小白,求帮助:自己编写了一个倒计时器,用了wx.Timer(),但不运行,也没有提示错误,求高手帮我看看一下,谢谢了。
import wx
import 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()
搜索更多相关主题的帖子: panel flag border Add Timer 
2021-03-17 14:13
jayji001
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2021-3-17
收藏
得分:0 
可以参考一下:Http://www.ipaa.cc
2021-03-17 14:56
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:244
专家分:2106
注 册:2019-8-16
收藏
得分:20 
回复 楼主 wangjx236007
self.Bind(wx.EVT_TIMER,self.OnTimer,self.timer)#绑定定时器  主要是这行

程序代码:
import wx
import 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.DEFAULT,wx.NORMAL,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.Bind(wx.EVT_TIMER,self.OnTimer,self.timer)#绑定定时器
        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()
2021-03-17 16:00
wangjx236007
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2021-3-2
收藏
得分:0 
谢谢,确实是我写错了,太感谢了。但还是不能运行下去,self.timer.Stop()不能停止。
2021-03-17 22:10
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:244
专家分:2106
注 册:2019-8-16
收藏
得分:0 
回复 4楼 wangjx236007
你自己都不调试的吗? 程序本身没有问题 self.seconds-=1 太小看不出效果,你可以调整 self.seconds-=1 mm ss xx的值。你输出看看是不是想要的。
2021-03-18 09:01
快速回复:我是一个python小白,求帮助:自己编写了一个倒计时器,用了wx.Timer( ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026080 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved