首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动滚动gtk.scrolledwindow?

如何自动滚动gtk.scrolledwindow?
EN

Stack Overflow用户
提问于 2011-03-07 19:11:18
回答 6查看 9.9K关注 0票数 20

我在ScrolledWindow中有一个treeview-widget,它是在运行时填充的。我想让ScrolledWindow自动滚动到列表的末尾。我通过调整ScrolledWindowvadjustment,每次在树视图中插入一行,“解决”了这个问题。例如:

代码语言:javascript
复制
if new_line_in_row:
   adj = self.scrolled_window.get_vadjustment()
   adj.set_value( adj.upper - adj.page_size )

如果我在交互式ipython会话中运行代码并自己设置值,一切都会按预期运行。

如果我使用默认的python解释器运行代码,自动滚动并不总是有效的。我调试了代码,问题似乎是,调整值有某种“滞后”,只有在一段时间后才会改变。

我的问题是:如何可靠地滚动到ScrolledWindow的最大位置?是否生成了可以使用的特殊信号?或者有没有更好的方法来设置adjustment-value

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-09 00:34:13

扩大搜索范围后,我找到了一个与ruby相关的答案。因为这个问题是与gtk相关的,所以它应该能够用任何这样的语言来解决:

您将更改的小部件(在我的例子中是treeview )与gtk.widget的'size-allocate‘信号连接起来,并将gtk.scrolledwindow值设置为“gtk.scrolledwindow- page_size”。示例:

代码语言:javascript
复制
self.treeview.connect('size-allocate', self.treeview_changed)

..。

代码语言:javascript
复制
def treeview_changed(self, widget, event, data=None):
    adj = self.scrolled_window.get_vadjustment()
    adj.set_value( adj.upper - adj.page_size )

链接到ruby-forum.com上的原始帖子:

hint hint

票数 29
EN

Stack Overflow用户

发布于 2012-01-15 14:52:56

fookatchu的答案可以改进,这样回调就可以被多个小部件使用:

代码语言:javascript
复制
def treeview_changed( self, widget, event, data=None ):
    adj = widget.get_vadjustment()
    adj.set_value( adj.upper - adj.pagesize )
票数 8
EN

Stack Overflow用户

发布于 2014-12-16 09:10:24

Python Gtk 3版本:

adj.set_value(adj.get_upper() - adj.get_page_size())

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5218948

复制
相关文章

相似问题

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