首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

[D]大侠请留步,wxpython:slider有关问题

2012-05-09 
[D]大侠请留步,wxpython:slider问题想让这个slider从头滑到尾,代码如下,运行后:OnSlider()被调用多次,添加

[D]大侠请留步,wxpython:slider问题
想让这个slider从头滑到尾,代码如下,运行后:OnSlider()被调用多次,
添加了self.Destory()后界面也没有直接退出,请问代码是不是哪写错啦!!

Python code
import wximport timeclass SliderFrame(wx.Frame):        def __init__(self):          wx.Frame.__init__(self,None,-1,'Slider example',size = (300,350))          panel = wx.Panel(self,-1)          self.count = 0          self.slider = wx.Slider(panel,100,0,1,100,pos = (10,10),size = (250,-1),                           style = wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS)          self.slider.SetTickFreq(10,1)          self.Bind(wx.EVT_SLIDER,self.OnSlider,self.slider)            def OnSlider(self,event):          print 'a'          for i in range(1,100):              self.slider.SetValue(i)            #  print i              time.sleep(0.1)          self.Destroy()          print 'b'        if __name__ == "__main__":    app = wx.PySimpleApp()    frame = SliderFrame()    frame.Show()    app.MainLoop()

--------------------------
Double行动:
原帖分数:40
加分:40

[解决办法]
gui的回调函数要尽速办完事,返回主循环里。你在onslider函数里拖10秒不好,用户在这期间操作窗口只会感到卡顿无响应。应改用计时器去更新slider吧,试试下面代码...
Python code
        ...        self.Bind(wx.EVT_SLIDER,self.OnSlider,self.slider)        self.timer = wx.CallLater(100, self.OnTimer)    def OnSlider(self, event):        if not self.timer.IsRunning():            self.timer.Start()                def OnTimer(self):        value = self.slider.GetValue()        if value < self.slider.GetMax():            self.slider.SetValue(value+1)            self.timer.Start() 

热点排行