wxPython before MainLoop

samwyse dejanews at email.com
Wed Aug 15 07:40:24 EDT 2007


Chris Mellon wrote:
> On 8/9/07, Heikki Toivonen <heikki at osafoundation.org> wrote:
> 
>>[david] wrote:
>>
>>>I'd like to refresh the display before I start the main loop.

If your window isn't able to interact with the user, then I'd consider 
it a splash screen, no matter if it does look exactly like your main 
application interface.

>>We have this kind of situation in Chandler, where we display and update
>>the splash screen before we enter MainLoop.
>>
[...]
>>3. The splash screen refresh is basically: draw new stuff,
>>self.Layout(), self.Update(), wx.Yield()
>>http://lxr.osafoundation.org/source/chandler/application/Application.py#1421

Looking at the Chandler code suggests a solution to [david]'s original 
problem.  It is possible that, on Windows only, he may need to call 
Update to finish painting the display.

1432         self.Layout()
1433         if wx.Platform == '__WXMSW__':
1434             self.Update()
1435         wx.GetApp().Yield(True)

> wxYield spins the event loop in place. This can have some serious
> consequences if you aren't very careful with your usage, like
> recursively entering event handlers. I generally consider it an
> experts only interface, and avoid it.

I'll confess to being one of those old-school programmers who, back in 
the day, wrote his code around big select loops instead of using 
threads, but I'm intriged by the "experts only" designation.  Can 
someone explain further?  Thanks!



More information about the Python-list mailing list