Я работаю над многоплатформенным приложением с wxpython, и у меня были проблемы с мерцанием окон при рисовании на Panel.
Раньше я рисовал в буфере (wx.Bitmap) во время событий движения мыши, а мой метод OnPaint был составлен просто из строки:
dc = wx.BufferedPaintDC(self, self.buffer)
Довольно стандартный, но все же у меня были проблемы с мерцанием в Windows, в то время как в Linux все работало нормально.
Я решил мою проблему , вызвав SetDoubleBuffered(True)
в методе __init__
.
Странно то, что теперь все работает, даже если я больше не использую BufferedPaintDC. Я изменил свое приложение так, чтобы все рисование выполнялось в методе OnPaint. Я не использую буфер, и рисование выполняется непосредственно на wx.PaintDC без проблем с мерцанием.
Итак, мой вопрос: является ли BufferedPaintDC бесполезным? Или не рекомендуется как-то? Я владелец книги «WxPython in Action» (2006), и в ней даже не упоминается SetDoubleBuffered