Есть ли тег автозаполнения, например, для управления быстрой /pygtk?
Я делаю приложение, похожее на задачу с поддержкой индикаторов, используя glade / python / pygtk / glade. Я делаю форму для сохранения предмета Todo. Каждая задача будет принадлежать 0 или более проектам.
Когда пользователь вводит имя проекта в поле ввода текста, я хочу, чтобы оно автоматически заполнялось на основе существующих проектов. Этот виджет должен вести себя аналогично текстовому вводу при заполнении формы "задать вопрос" на этом сайте (Ask-ubuntu.ru). Ниже скриншот того, что я имею в виду.
Например, когда пользователь хочет добавить задачу в проекты "быстро", как только пользователь начинает вводить "qu *", он должен предложить все доступные проекты, начинающиеся с "qu" (например, "быстрый", "быстрый", "очередь"), "шарлатанство" и т. д.). Пользователь может нажать стрелку вниз, чтобы выбрать правильный вариант или продолжить ввод. Когда пользователь нажимает пробел, он должен начинаться с нового предложения.
Есть ли элемент управления / виджет в pyGTK/ быстро, что я могу использовать для этого? Бонусные баллы, если я могу также перечислить число рядом с каждым предложением с количеством элементов todo, которые принадлежат этому проекту, как на скриншоте ниже.
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, если хотите.