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