gpt4 book ai didi

python - 有建议的条目

转载 作者:太空狗 更新时间:2023-10-29 23:56:17 25 4
gpt4 key购买 nike

我正在构建一个小型 PyGTK 应用程序,我有一个文本输入字段(目前是一个 ComboBoxEntry),其中填充了一些用户应该能够从中选择的值。

我想我想做的是过滤掉匹配的字段并只显示那些,以便使用键盘箭头的用户可以选择匹配的字段之一。

为了提供一些背景知识,预定义值是一堆 url,用户应该能够从这些 url 中进行选择或填写一个新的。

例子:预定义的网址:

当用户键入“http://www.g”时'以该字符串开头的三个 URL 将显示(以某种方式)并在键入 ' http://www.goog 时显示。 '以that开头的两个要显示

有什么想法吗?

最佳答案

带有 EntryCompletionEntry似乎比 ComboBoxEntry 更合适。一如既往,tutorial是一个好的开始。

当预定义的 URL 列表很小且固定时,设置起来非常容易。您只需要填充一个 ListStore:

# simplified example from the tutorial
import gtk

urls = [
'http://www.google.com',
'http://www.google.com/android',
'http://www.greatstuff.com',
'http://www.facebook.com',
]
liststore = gtk.ListStore(str)
for s in urls:
liststore.append([s])

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

entry = gtk.Entry()
entry.set_completion(completion)

# boilerplate
window = gtk.Window()
window.add(entry)

window.connect('destroy', lambda w: gtk.main_quit())
window.show_all()
gtk.main()

用户不太可能输入“http://”甚至“www.”,因此您可能希望匹配 URL 的任何部分(例如,只需“og”即可!):

def match_anywhere(completion, entrystr, iter, data):
modelstr = completion.get_model()[iter][0]
return entrystr in modelstr
completion.set_match_func(match_anywhere, None)

这将测试 ListStore 中的每个值是否匹配,因此它不能扩展到巨大的列表(我的意思是巨大;1000 个就可以)。

请务必使用 EntryCompletion 的各种选项,以配置最令人愉快的行为。

关于python - 有建议的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com