2009-06-25 8 views
1

Dans mon application wxpython basée sur wx.Frame, je dessine des lignes sur un panneau lorsque certains événements se produisent en créant des instances wx.ClientDC lorsque cela est nécessaire. Le seul problème est que si la fenêtre est minimisée puis restaurée, les lignes disparaissent! Existe-t-il un type de méthode que je devrais remplacer ou un événement à lier à ce qui me permettra d'appeler la méthode de dessin que j'ai créée lorsque la fenêtre est restaurée?wxpython: Comment est-ce que je peux redessiner quelque chose quand une fenêtre est restaurée?

Merci!

Répondre

0

Lorsque la fenêtre est restaurée, elle est (sur certaines plates-formes) repeinte à l'aide du gestionnaire EVT_PAINT.

La solution est par ex. dessiner les mêmes lignes dans OnPaint(). Ou tampon ce que vous dessinez. Voir la classe wxBufferedDC.

1

seul l'endroit où vous devez dessiner est sur wx.EVT_PAINT, donc lier à cet événement dans init du panneau par ex.

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

dans _onPaint, utilisez wx.PaintDC pour dessiner par exemple,

dc = wx.PaintDC(self) 
dc.DrawLine(0,0,100,100) 
Questions connexes