是否有类似 quick/pygtk 的自动完成标签控件?

是否有类似 quick/pygtk 的自动完成标签控件?

我正在使用 glade/python/pygtk/glade 制作一个支持指示器的类似待办事项的应用程序。我正在制作一个表单来保存待办事项。每个待办事项将属于 0 个或多个项目。

当用户在文本输入字段中输入项目名称时,我希望它根据现有项目自动完成。此小部件的行为应类似于在此网站 (askubuntu.com) 上填写提问表单时的文本输入。下面是我所指的屏幕截图。

例如,当用户想要在“quickly”项目下添加待办事项时,一旦用户开始输入“qu*”,它应该会建议所有以“qu”开头的可用项目(例如“quick”、“quickly”、“queue”、“quack”等)。用户可以按向下箭头选择正确的选项或继续输入。当用户按下空格键时,它应该从新的建议开始。

pyGTK/quickly 中是否有控件/小部件可用于实现此目的?如果我还可以在每个建议旁边列出一个数字,其中包含属于该项目的待办事项数量,则可获得加分,类似于下面的屏幕截图。

AskUbuntu.com 上的自动完成功能

答案1

这是一个简单的例子:

from gi.repository import Gtk

class MyExample(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        self.connect("delete-event", Gtk.main_quit)

        liststore = Gtk.ListStore(str)
        for match in ["test1", "test2", "test3", "spam", "foo", "eggs", "bar"]:
            liststore.append([match])

        completion = Gtk.EntryCompletion()
        completion.set_model(liststore)
        completion.set_text_column(0)

        entry = Gtk.Entry()
        entry.set_completion(completion)
        self.add(entry)
        self.show_all()

if __name__ == "__main__":
    app = MyExample()
    Gtk.main()

您只需动态地用您想要的值填充列表存储即可。在它旁边显示一个数字可能很简单,只需将其附加到您要添加到列表存储的字符串中,或​​者您可以在其中创建第二列。这一切都取决于您的代码,无法回答,但这应该可以让您开始。

如果你愿意的话,你甚至可以在 Glade 中创建上述大部分代码。

相关内容