【发布时间】:2011-03-23 13:26:12
【问题描述】:
我有一个带有 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)
我想在打开后保存页面的当前滚动位置,并且此代码正在运行。只有一个问题,这对我来说是个大问题:它会渲染 html 页面两次。 首先在 self.SetPage 之后,然后在 self.Scroll 之后。
所以每次我调用 self.OpenURL 时,我都会看到页面在闪烁。它会滚动到顶部,然后滚动到所需位置。
我试图通过处理 EVT_PAINT 来修复它:
self.Bind(wx.EVT_PAINT, self.OnPaintEvt)
但是 self.OnPaintEvt 在 self.Scroll 之后调用 - 所以这种方式不适合我。
有什么想法吗?
【问题讨论】:
标签: python wxwidgets wxhtmlwindow