1

我正在开发一个 GTK 应用程序(在 Python 中使用 PyGTK),我需要手动将 Gtk.ScrolledWindow 滚动到它包含的子项以在屏幕上显示它。

ScrolledWindow 包含一个ListBox,其中包含很多ListBoxRow。

self.currencySwitcher = CurrencySwitcher(self) self.currencySwitcherBox = Gtk.ScrolledWindow(vexpand = True) self.currencySwitcherBox.add(self.currencySwitcher)

Gtk.ListBox 的 CurrencySwitcher 继承:

class CurrencySwitcher (Gtk.ListBox): # ...

我有一个搜索系统可以在此 ListBox 中查找特定行,但是当我通过搜索一行单击时,它在屏幕上不可见(我必须滚动才能看到它)所以我必须能够滚动到一个孩子在屏幕上看到它,而不必手动滚动 ScrolledWindow

我怎样才能做到这一点 ?我已经搜索了很多,但我找不到一个好的答案。谢谢

4

1 回答 1

3

Gtk.ListBox也继承自Gtk::Container,所以看看 的set_focus_vadjustment()set_focus_hadjustment()成员Gtk.Container

一旦你在你的 ListBox 上调用了这些函数中的一个或两个,你就可以拥有你的 ListBoxRow 子项grab_focus()(继承自 Gtk.Widget),它将被滚动到视图中。

于 2019-03-07T14:47:28.660 回答