Дуже цікавий ефект, а точніше помилку, я отримав при малюванні на формі (wx.Frame) за допомогою wx.PaintDC. Ось код події wx.EVT_PAINT, який використовувався спочатку:
def on_paint(self, evt): self.dc = wx.PaintDC(self) self.dc.DrawBitmap(self.background, 0,0, True)Як ви вже, маюуть, здогадались, дані маніпуляції виконуються для відмальовки фону вікна, а точніше саме вікно в формі зображення. Приклад можна підглянути в wx.Demo -> Miscellaneous -> ShapedWindow. Так от, такий код приводить до того, що, якщо деактивувати вікно (відбудеться подія ex.EVT_ACTIVATE), а потім знову активувати (ця ж подія), то контроли всередині вікна не відмалюються. Теперь поглянемо на код, який працює правильно:
def on_paint(self, evt): dc = wx.PaintDC(self) dc.DrawBitmap(self.background, 0,0, True)Як бачите, проблема вирішилась тим, що ми не робимо контекст атрибутом вікна. Чому так? Хороше запитання, і відповідь на нього поки не знаю, не заглиблювався. Але якщо хто знає, пишіть в коментарях.
Коментарі
Дописати коментар