画面のちらつき解決

wxWindows のリファレンスのwxWindow のページを見てたらスタイル指定の中のwxCLIP_CHILDRENのところに、

子が描画されるときに、 背景が再描画されることによって起こる「ちらつき」を除去する。
Use this style to eliminate flicker caused by the background being repainted, then children being painted over them. Windows only.

とありまして、ほうほう、とメインフレームに追加してみたところ、ウィンドウの枠がなくなりました。しかもちらつくし。


で、下の英語からヒントを得て、wxWindows flicker で検索してみたらば、このページ に行き当たりまして、そこにはEVT_ERASE_BACKGROUND のイベントハンドラを書いたらなんたらかんたらとあったので試してみました。結果としては、キャンバスのウィンドウ(ウィンドウ親子の子)の方になにもしないイベントハンドラを書くことでちらつきがなくなりました。

@binder(wx.EVT_ERASE_BACKGROUND,control=ID_CANVAS)
def OnEraseBackground(self, evt):
    pass