Combobox实现自动匹配输入

代码案例实现效果: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()

效果展示:

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值