wx.html.HtmlWindow ウィンドウを持つ wx python アプリケーションがあります。
class MyHtmlWindow(wx.html.HtmlWindow):
メソッド SetPage は、ウィンドウの html コンテンツを更新するために使用されます。
def OpenURL(self, url, save_scroll_pos=True):
def callback(src, url, save_scroll_pos):
pos = self.GetViewStart()[1]
self.SetPage(src)
if save_scroll_pos:
self.Scroll(0, pos)
def errback(err):
self.SetPage('<html>Failed:<br>%s</html>' % err.getErrorMessage())
d = self.DownloadURL(url)
d.addCallback(callback, url, save_scroll_pos)
d.addErrback(errback)
ページを開いた後に現在のスクロール位置を保存したいのですが、このコードは機能しています。1 つだけ問題があり、これは私にとって大きな問題です。html ページを 2 回レンダリングしています。最初は self.SetPage の後、2 番目は self.Scroll の後にあります。
したがって、self.OpenURL を呼び出すたびに、ページが点滅していることがわかります。必要な位置まで上と右にスクロールします。
EVT_PAINT を処理して修正しようとしていました。
self.Bind(wx.EVT_PAINT, self.OnPaintEvt)
しかし、self.OnPaintEvt は self.Scroll の後に呼び出しているため、この方法は私には向いていません。
何か案は?