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