Есть ли тег автозаполнения, например, для управления быстрой / pygtk?

Я делаю приложение, похожее на задачу, с поддержкой индикаторов, используя glade / python / pygtk / glade. Я делаю форму для сохранения предмета Todo. Каждая задача будет принадлежать 0 или более проектам.

Когда пользователь вводит имя проекта в поле ввода текста, я хочу, чтобы оно автоматически заполнялось на основе существующих проектов. Этот виджет должен вести себя аналогично текстовому вводу при заполнении формы «задать вопрос» на этом сайте (askubuntu.com). Ниже скриншот того, что я имею в виду.

Например, когда пользователь хочет добавить задачу в проекты «быстро», как только пользователь начинает вводить «qu *», он должен предложить все доступные проекты, которые начинаются с «qu» (например, «quick», « быстро "," очередь "," шарлатанство "и т. д.). Пользователь может нажать стрелку вниз, чтобы выбрать правильный вариант или продолжить ввод. Когда пользователь нажимает пробел, он должен начинаться с нового предложения.

Есть ли в pyGTK / элемент управления / виджет, который я могу использовать для этого? Бонусные баллы, если я могу также перечислить число рядом с каждым предложением с количеством элементов todo, которые принадлежат этому проекту, аналогично скриншоту ниже.

Auto-completion on AskUbuntu.com

1
задан 6 December 2012 в 16:09

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, если хотите.

0
ответ дан 6 December 2012 в 16:09

Другие вопросы по тегам:

Похожие вопросы: