代码案例实现效果:combobox输入内容后,按键盘下方向键或鼠标双击,能匹配输入框中匹配到的内容
要点:combobox的state设置为"readonly"时,点击combobox输入框处会自动弹出下拉列表,
但设置为"readonly"时,combobox无法输入,所以这里我绑定了鼠标左键单击事件,左键单击恢复combobox的state属性为"normal",这样有可以恢复输入了。
匹配触发动作可以根据自己的需求改,代码案例写的是按方向键下或鼠标左键双击,触发匹配动作。
import tkinter.ttk
#鼠标双击事件
def combobox_auto_match_value(event):
sCurrentText = combobox.get()
sCurrentText = sCurrentText.upper()
tNewComList = []
for i in tList:
if sCurrentText in i.upper():
tNewComList.append(i)
combobox.configure(values=tNewComList,state='readonly')
#鼠标单击事件
def combobox_restore_input(event):
combobox.configure(state='normal')
#定义Combobox
tList = ['python', 'java', 'C', 'C++']
root = tkinter.Tk()
root.geometry("200x200+0+0")
var = tkinter.StringVar()
combobox = tkinter.ttk.Combobox(root, textvariable=var, value= tList)
#绑定Combobox的相应事件
combobox.bind("<Button-1>",combobox_restore_input) #鼠标单击combobox的state恢复为可输入状态"normal"
combobox.bind("<Double-Button-1>",combobox_auto_match_value) #鼠标双击自动匹配输入的值,state状态改为"readonly"
combobox.bind("<KeyPress-Down>",combobox_auto_match_value) #鼠标双击自动匹配输入的值,state状态改为"readonly"
combobox.pack(padx=5, pady=10)
#窗口循环显示
root.mainloop()
效果展示: