我在WebKit.WebView()中添加了一个Gtk.ScrolledWindow()
我希望webview经常使用以下方法加载本地HTML文件:
WebView.load_html_string(html, base)
网页越来越长,每次刷新时,滚动窗口都会滚动回顶部。我想阻止这一切,但我遇到了困难。
每次刷新webview时,我都尝试过调整滚动窗口的vadjustment,但这不起作用。
到目前为止,我的情况如下:
previous = scrolled_window.get_vadjustment().value #Value before refresh
update_webview() #This method loads the new HTML file
scrolled_window.get_vadjustment().value = previous但不起作用。滚动滚筒似乎滚动到我想要它的地方,但然后它直接回到起点。
发布于 2014-08-08 14:43:28
问题是您设置了相应的调整,但是HTML需要一些时间来呈现,所以在完成加载后,调整值将被重新设置。
我曾经通过连接到改变的信号来解决这个问题。这个信号的问题是,它也会在用户滚动时发出。因此,如果每次发出信号时都设置该值,则用户无法滚动。因此,您必须创建一个条件,检查是否更改了视图并希望设置调整。
class webviewscroll:
def __init__(self):
#webview = ...
#scrolled_window = ...
self.vadjustment = scrolled_window.get_vadjustment()
self.vadjustment.connect('changed', self.on_vadjustment_changed)
self.scroll_position = {'html_changed': False, 'value': 0}
def update(self):
self.scroll_position['html_changed'] = True
self.scroll_position['value'] = self.vadjustment.get_value()
self.update_webview() #This method loads the new HTML file
def on_vadjustment_changed(self, adjustment):
if self.scroll_position['html_changed'] == True:
self.vadjustment.set_value(self.scroll_position['value'])
self.scroll_position['html_changed'] = Falsehttps://stackoverflow.com/questions/24845446
复制相似问题