如何设置Gtk.ScrolledWindow调整?

0 投票
2 回答
2438 浏览
提问于 2025-04-18 13:34

我该如何在python3中设置Gtk.ScrolledWindow的垂直调整?下面是一个展示这个问题的例子。

#!/usr/bin/env python3

from gi.repository import Gtk

class window:
    def __init__(self):
        win = Gtk.Window()
        win.connect("delete_event", Gtk.main_quit)
        win.set_default_size(300,100)
        scroll = Gtk.ScrolledWindow(None, None)
        view = Gtk.Viewport(None, None)
        label = Gtk.Label('a\n\n\n\n\nb\n\n\n\n\n\n\n\nc')
        view.add(label)
        scroll.add(view)
        position = Gtk.Adjustment(value=50)
        scroll.set_vadjustment(position)
        win.add(scroll)
        win.show_all()


if __name__ == '__main__':
    win = window()
    Gtk.main()

2 个回答

0

通常它们会被设置为None。如果你想自己调整的话,可以新建一个Gtk.Adjustment对象。Gtk.Adjustment的参数包括(初始值,最小值,最大值,步进增量,页面增量,页面大小)。

1

luciomrx的回答是对的,但首先需要找出一些数值。所以,使用 get_vadjustment()set_value() 会更简单。此外,set_vadjustment() 这个方法必须在 show_all() 之后执行。

这是它的工作原理:

from gi.repository import Gtk

class window:
    def __init__(self):
        win = Gtk.Window()
        win.connect("delete_event", Gtk.main_quit)
        win.set_default_size(300,100)
        scroll = Gtk.ScrolledWindow(None, None)
        view = Gtk.Viewport(None, None)
        label = Gtk.Label('a\n\n\n\n\nb\n\n\n\n\n\n\n\nc')
        view.add(label)
        scroll.add(view)
        win.add(scroll)
        win.show_all()
        position = scroll.get_vadjustment()
        position.set_value(50)
        scroll.set_vadjustment(position)


if __name__ == '__main__':
    win = window()
    Gtk.main()

撰写回答