你能有一个可以通过键入跳转到条目的 TKinter 下拉菜单吗?

Can you have a TKinter drop down menu that can jump to an entry by typing?

我有我的 OptionMenu 设置,但它是一个很长的列表(每个 FBS 足球队)并且需要很长时间才能滚动浏览。有没有一种方法可以设置菜单,以便我可以开始输入团队名称并跳转到 OptionMenu 的那个部分?另外,如果有一种方法可以在按下回车键时自动 select 它,那也会很有帮助。

您必须捕捉每个按键,找到列表中以该字母开头的第一项,然后设置变量。在下面的代码中 "five" 被设置为无论按下哪个键作为示例。

import sys
if sys.version_info[0] < 3:
    import Tkinter as tk     ## Python 2.x
else:
    import tkinter as tk     ## Python 3.x

master = tk.Tk()
master.geometry("125x100")

def key_in(event):
    ch=event.char.lower()
    print("key_in", ch)
    if "a" <= ch <= "z":
        variable.set("five")
    if event.keysym=="Return":
        print("Enter key pressed")

def ok(arg):
    print("ok called", variable.get())

variable = tk.StringVar(master)
options=("one", "two", "three", "four", "five")
op=tk.OptionMenu(master, variable, *options, command=ok)
op.grid()
variable.set("two")

op.bind_all('<Key>', key_in)
op.focus_set()

tk.Button(master, text="Exit", bg="red",
          command=master.quit).grid(row=1)

master.mainloop()