首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Webkit autoscroll

Python Webkit autoscroll
EN

Stack Overflow用户
提问于 2014-07-19 22:08:21
回答 1查看 177关注 0票数 0

我在WebKit.WebView()中添加了一个Gtk.ScrolledWindow()

我希望webview经常使用以下方法加载本地HTML文件:

WebView.load_html_string(html, base)

网页越来越长,每次刷新时,滚动窗口都会滚动回顶部。我想阻止这一切,但我遇到了困难。

每次刷新webview时,我都尝试过调整滚动窗口的vadjustment,但这不起作用。

到目前为止,我的情况如下:

代码语言:javascript
复制
previous = scrolled_window.get_vadjustment().value #Value before refresh
update_webview() #This method loads the new HTML file
scrolled_window.get_vadjustment().value = previous

但不起作用。滚动滚筒似乎滚动到我想要它的地方,但然后它直接回到起点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-08 14:43:28

问题是您设置了相应的调整,但是HTML需要一些时间来呈现,所以完成加载后,调整值将被重新设置。

我曾经通过连接到改变的信号来解决这个问题。这个信号的问题是,它也会在用户滚动时发出。因此,如果每次发出信号时都设置该值,则用户无法滚动。因此,您必须创建一个条件,检查是否更改了视图并希望设置调整。

代码语言:javascript
复制
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'] = False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24845446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档