我怎么滚动wxPython w.html。HtmlWindow回落到它是当用户点击的链接?
题
我使用一个wxPython w.html。HtmlWindow显示的一部分,我的接口。用户可以滚动名单的链接在一窗口小于清单。当他们点击的链接,我需要重新绘制的网页,但我希望返回的网页位置回到他们击它。
我已经试过了鼠标事件.GetLogicalPosition()上事件,但是它想要的一直流和更好我能做的就是得到相同的信息作为正如所见(),所以我不能喂养的权利之一。
我也试过HtmlWindow.CalcScrolledPosition(),但显然这不是用在HtmlWindow因为我得到一个NotImplementedError...
我想是一个滚动位置,可以从鼠标事件,或OnLinkClicked的信息。
我知道HtmlWindow.ScrollToAnchor(),但它的片状和缺乏美感--我希望绕过它,如果可能的话这样我就可以回滚 到底 那里的用户。
谢谢!
解决方案
怎么样有一个看看 来源wxHtmlWindow 灵感?例如在 wxHtmlWindow::LoadPage()
:它的
// store[s the current] scroll position into history item:
int x, y;
GetViewStart(&x, &y);
(*m_History)[m_HistoryPos].SetPos(y);
这个保存的滚动位置是用于 wxHtmlWindow::HistoryBack()
:
Scroll(0, (*m_History)[m_HistoryPos].GetPos());
Refresh();
回去保存的位置。
我们认为,这种内置于"走到最后的位置-在窗口"处理不是大多数"的片状和缺乏美感".可能类似的东西对你的工作吗?
其他提示
也许有点晚了,但是一些技巧,从斧头和一些提示 在这里,, 我认为,电话:
scrollpos = wx.html.HtmlWindow.GetViewStart()[1]
和储存,以及后来做呼叫:
wx.html.HtmlWindow.Scroll(0, scrollpos)
对我的作品。当然,你需要改变适.html。HtmlWindow实际参考的一个实例。
这里是我在做什么滚动页以前的位置。我这样做是为了避免闪烁。
pos = self.GetViewStart()[1]
self.Freeze()
self.SetPage(src)
if save_scroll_pos:
self.Scroll(0, pos)
self.Thaw()
通常,点击事件被触发时通过MouseUp事件。如果你跟踪鼠的位置,通过捕获任何MouseDown事,你会知道的最后的点击(MouseUp)发生的,那应该能让你重建的事情。
对于这个特定问题,可能需要做更多的工作MouseDown像检查,如果他们是在wxHtmlWindow控制和如果是这样,然后节省的东西就像一个线号码。