Combobox实现自动匹配输入

该博客介绍了如何使用Tkinter的ttk.Combobox实现自动匹配输入内容的功能。通过设置Combobox的状态并在鼠标单击和双击事件中切换其状态,实现了在输入后按键盘下方向键或鼠标双击时自动匹配列表中的内容。代码示例详细展示了事件绑定和值匹配的实现过程。
摘要由CSDN通过智能技术生成

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

效果展示:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值