wxPython fast and slow

Mike Driscoll kyosohma at gmail.com
Sun Mar 8 14:22:22 CET 2009


On Mar 8, 3:52 am, iu2 <isra... at elbit.co.il> wrote:
> On Mar 6, 6:52 pm, Mike Driscoll <kyoso... at gmail.com> wrote:
>
> > ...
> > Can you post a sample application so we can try to figure out what's
> > wrong? You might also cross-post this to thewxPythonmailing list.
> > They might know.
>
> > Mike- Hide quoted text -
>
> > - Show quoted text -
>
> Hi, thanks for your reply
>
> Here is a sample application:
>
> ----------------------------------------------------------
>
> import wx
> import time
>
> class My_frame(wx.Frame):
>     def __init__(self):
>         wx.Frame.__init__(self, None, -1, 'Moving panel')
>         self.surface = p = wx.Panel(self, size=(300, 130))
>         self.square = wx.Panel(p, -1, size=(100, 100), pos=(0, 30))
>         self.square.Bind(wx.EVT_PAINT, self.on_paint_square)
>
>         btn_move = wx.Button(p, -1, 'Move panel', pos=(0, 0))
>         self.Bind(wx.EVT_BUTTON, self.move_panel, btn_move)
>
>         self.Fit()
>
>     def move_panel(self, evt):
>         def gen():
>             for x in range(200):
>                 yield x
>             for x in range(200, 0, -1):
>                 yield x
>         for x in gen():
>             self.square.SetPosition((x, 30))
>             time.sleep(0.005)
>
>     def on_paint_square(self, evt):
>         square = evt.GetEventObject()
>         dc = wx.BufferedPaintDC(square)
>         dc.Pen = wx.Pen('blakc', 2)
>         dc.Brush = wx.Brush('light blue')
>         dc.DrawRectangle(0, 0, *square.GetSize())
>
> app = wx.PySimpleApp()
> My_frame().Show()
> app.MainLoop()
>
> ----------------------------------------------------------
>
> Press the button and the panel moves to the right and then back to the
> left.
> While PyScripter is running the panel moves at a certain speed. You
> can run the application from the Windows explorer with the same speed.
> You don't need to run it from PyScripter.
> When PyScripter is closed, the application runs much less quickly.
> I experienced this on two PC-s.
> Maybe this behavior is not even related to wxPython but to the sleep
> command. I don't know...
>
> Thanks
> iu2

You probably want to use wx.Timer rather than using time.sleep. You
could use wx.Sleep() too. I don't really understand why you're doing
what you're doing though. Did you re-post to the wxPython group?

Mike



More information about the Python-list mailing list