确保从完成列表顶部显示条目完成列表

时间:2019-08-06 18:54:35

标签: python gtk pygobject

我正在使用PyGObject(Python + Gtk3)开发GUI。我注意到,如果Gtk.Entry小部件位于屏幕的上半部分,则其相应的完成菜单会显示在小部件下方,并滚动到完成列表的顶部,而如果位于下部,在屏幕的一半,完成菜单出现在小部件上方,并滚动到完成列表的底部。我不在乎相对于Gtk.Entry小部件显示菜单的位置,但是我想确保在菜单首次弹出时将菜单滚动到顶部。

我试图假装Gtk.EntryCompletion和Gtk.ListStore对象继承自Gtk.Scrollable,但它们不是。

如果要重现我认为有问题的行为,请运行以下代码,将生成的窗口拖动到屏幕底部附近,然后在输入框中键入1。

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

class ExampleApp(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        # build child components
        self.entry = Gtk.Entry()
        self.completion = Gtk.EntryCompletion()
        self.liststore = Gtk.ListStore(str)

        # make parts of completion talk to each other
        self.entry.set_completion(self.completion)
        self.completion.set_model(self.liststore)
        self.completion.set_text_column(0)

        # populate completion list
        for i in range(1000):
            self.liststore.append([str(i)])

        self.add(self.entry)
        self.connect("destroy", Gtk.main_quit)
        self.show_all()
        Gtk.main()

if __name__ == '__main__':
    win = ExampleApp()

有人知道我如何确保在首次弹出完成列表时,无论输入小部件相对于屏幕的位置如何,列表的顶部都是可见的?

0 个答案:

没有答案