wxpython: Как я могу перерисовать что-то, когда окно восстановлено? - PullRequest
1 голос
/ 26 июня 2009

В моем приложении wxpython на основе wx.Frame я рисую некоторые линии на панели, когда происходят некоторые события, создавая при необходимости экземпляры wx.ClientDC. Единственная проблема заключается в том, что если окно свернуто, а затем восстановлено, линии исчезнут! Есть ли какой-нибудь метод, который я должен переопределить, или событие, к которому нужно привязать, которое позволит мне вызвать метод рисования, который я создал, когда окно восстанавливается?

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 июня 2009

единственное место, которое вы должны рисовать, находится на wx.EVT_PAINT, поэтому привязайте это событие к init панели, например,

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

в _onPaint, используйте wx.PaintDC, чтобы нарисовать, например,

dc = wx.PaintDC(self)
dc.DrawLine(0,0,100,100)
0 голосов
/ 26 июня 2009

Когда окно восстанавливается, оно (на некоторых платформах) перерисовывается с помощью обработчика EVT_PAINT.

Решение, например, рисовать те же линии в OnPaint (). Или буферизируйте то, что вы рисуете. См. Класс wxBufferedDC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...