wxPython - drawing without paint event

7stud bbxx789_05ss at yahoo.com
Sun Aug 12 08:32:37 CEST 2007


On Aug 11, 7:59 pm, glenn.chapp... at gmail.com wrote:
> On Aug 11, 3:31 am, Bjoern Schliessmann <usenet-
>
>
>
> mail-0306.20.chr0n... at spamgourmet.com> wrote:
> >  glenn.chapp... at gmail.com wrote:
> > > On a related topic, it seems like it would be nice to do *all*
> > > drawing in
> > > response topaintevents. When I get aneventfrom the timer, I
> > > would just tell wx that part of the window needs redrawing, and
> > > depend on it to give me apainteven when nothing of higher
> > > priority needs to be done.
>
> > One nice strategy from an example in "wxPython in Action" is the
> > following:
>
> > * the frame has Draw methods that draw into a BufferedDC, which is
> > chained to a bitmap member
>
> > * inside thepaintmethod, the bitmap member is drawn to screen
>
> Okay, but how do I tell wx that it needs to send me a paint event?

Try this:

--------------
import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "My Window")

        panel = wx.Panel(self, -1)
        self.text = wx.StaticText(panel, -1, "hello", pos=(40, 40) )

        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.on_timer_event)
        self.timer.Start(milliseconds=1000, oneShot=False)

        self.Bind(wx.EVT_PAINT, self.on_paint)

    def on_timer_event(self, event):
        self.GetEventHandler().ProcessEvent(wx.PaintEvent())

    def on_paint(self, event):
        print "execution entered on_paint"

app = wx.App(redirect=False)

win = MyFrame()
win.Show()

app.MainLoop()
------------

I'm not sure why the call should be
self.GetEventHandler().ProcessEvent() instead of just
self.ProcessEvent().




More information about the Python-list mailing list