Python: 如何让Gtk.scrolledwindow滚动到Gtk.Treeview中的选项

4 投票
2 回答
1856 浏览
提问于 2025-04-18 12:06

我想知道怎么让Gtk.scrolledwindow在Gtk.Treeview中滚动到选中的项目。

我正在写一个触摸屏自助服务应用,这个应用有上下按钮可以在树形视图中移动选中的项目。

但是当选中的项目移出屏幕时,滚动窗口并不会自动向下滚动。

我想的解决办法是,当按下向下按钮时,选中的项目向下移动一格(这部分已经可以实现),然后让滚动窗口自动滚动到树形视图中的选中项目,但我不知道该怎么做。

我使用的是Gtk3。

有没有人能给我一些建议?

2 个回答

1

在你调用了选择的路径上的 gtk_tree_view_scroll_to_cell 这个函数之后。

3

请查看这个链接:http://lazka.github.io/pgi-docs/Gtk-3.0/classes/TreeView.html#Gtk.TreeView.scroll_to_cell

不要用“add_with_viewport”把你的树视图添加到滚动窗口中。更多信息请看这个链接:http://mailman.daa.com.au/cgi-bin/pipermail/pygtk/2009-January/016440.html

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Auto Scroll")
        self.set_size_request(400, 200)

        self.liststore = Gtk.ListStore(str, str)
        for n in range(40):
            self.liststore.append(["Info", "http://lazka.github.io/pgi-docs/Gtk-3.0/classes/TreeView.html"])
        treeview = Gtk.TreeView(model=self.liststore)
        for n, name in enumerate(["Name", "Link"]):
            renderer_text = Gtk.CellRendererText()
            column_text = Gtk.TreeViewColumn("Text", renderer_text, text=n)
            treeview.append_column(column_text)
        scrolled_window = Gtk.ScrolledWindow()
        self.add(scrolled_window)
        scrolled_window.add(treeview)

    def main(self):
        Gtk.main

win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

撰写回答