我正在使用 glade/python/pygtk/glade 制作一个支持指示器的类似待办事项的应用程序。我正在制作一个表单来保存待办事项。每个待办事项将属于 0 个或多个项目。
当用户在文本输入字段中输入项目名称时,我希望它根据现有项目自动完成。此小部件的行为应类似于在此网站 (askubuntu.com) 上填写提问表单时的文本输入。下面是我所指的屏幕截图。
例如,当用户想要在“quickly”项目下添加待办事项时,一旦用户开始输入“qu*”,它应该会建议所有以“qu”开头的可用项目(例如“quick”、“quickly”、“queue”、“quack”等)。用户可以按向下箭头选择正确的选项或继续输入。当用户按下空格键时,它应该从新的建议开始。
pyGTK/quickly 中是否有控件/小部件可用于实现此目的?如果我还可以在每个建议旁边列出一个数字,其中包含属于该项目的待办事项数量,则可获得加分,类似于下面的屏幕截图。
答案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 中创建上述大部分代码。