你能有一个可以通过键入跳转到条目的 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()
我有我的 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()