[wxPython-users] Auto-pulsing wxProgressDialog?
Chris Mellon
arkanes at gmail.com
Wed Jan 3 08:31:38 PST 2007
On 1/3/07, Rooney, Mike (ext. 324) <mxr at qvii.com> wrote:
> >Recent version of wxPython include a library called
> >wx.lib.delayedresult which can help with this, it is featured in the
> >demo under the process and events category.
>
> I gave it a shot but the same thing happens. I just don't understand!
> I replaced the database call with a sleep call just to simplify even
> more but still no pulsing occurs.
>
> Let me post a little code and maybe it will be clear what I am doing
> wrong. onPack in the controller is what is called first. It tells the
> view to show the dialog, which is supposed to start a timer but it
> never pulses and 12 never gets printed.
>
> in the controller:
> def onPack(self, event=None):
> self.view.showPackDialog()
>
> import time, wx.lib.delayedresult as delayedresult
> delayedresult.startWorker(self.onPackDone, lambda:time.sleep(5))
>
> def onPackDone(self, result):
> self.view.closePackDialog()
>
>
> in the view:
> def showPackDialog(self):
> self.dlg = wx.ProgressDialog("Packing Database", "Packing routines in the ZopeDB", parent=self)
> self.t = wx.Timer(self)
> self.t.Bind(wx.EVT_TIMER, self.onPackTimer)
> self.t.Start(10)
>
> def onPackTimer(self, e):
> print 12 #debug
> self.dlg.Pulse()
>
> def closePackDialog(self):
> self.t.Stop()
> self.dlg.Destroy()
>
> Thanks for your help so far, it is greatly appreciated. Hopefully the
> code is clean and easy to interpret (no pun intended).
>
Call Refresh() after Pulse().
More information about the wxpython-users
mailing list