m0_51267983 2023-03-10 10:13 采纳率: 66.7%
浏览 33
已结题

Ttkinter模块模糊查询下拉菜单自动收回

Ttkinter模块下拉菜单在不选择时怎么自动收回: 做了一个模糊查询的模块,目前可以实现查询到匹配的选择,但是现在有个问题是,匹配到了之后,如果我不选择下拉菜单的内容,这个下拉菜单就一直显示。
想实现的功能:比如:我输入cq,匹配出了cqs,但是我不选择,直接点目的地,匹配的下拉菜单就自动收回

img

def text_change(event,result):
    current = text1.get()
    current_value = event.char
    # \x08就是 删除按钮
    if current_value == '\x08':
        current = current[:-1]
    else:
        current += current_value
    if current.strip()!= "":
       handlerResult(current,result)
    else:
        # place_forget隐藏控件
        LB1.place_forget()

def handlerResult(current,result):
   # LB1.place()
    print("-----------------------------")
    LB1.delete(0, END)
    result1=list(set(result ))
    for i in result1:
        # 总数据中包含输入框中的内容   这里根据你的总数据自己设置
        if current in i[2]:
                LB1.insert(END,i[2]+","+i[0]+","+str(i[1]))
    LB1.place(x=50, y=50)
def send(event):
    # 将双击列表后的文字显示到输入框上
    text1.delete(0, END)
    print(LB1.curselection())
    text1.insert(0, str(LB1.get(LB1.curselection())))
    print(LB1.get(LB1.curselection()))
    # 隐藏列表
    LB1.delete(0, END)
    LB1.place_forget()
    


def handlerAdaptor(fun, *args):
    return lambda event, fun=fun, kwds=args: fun(event, *args)

root = Tk()
# 设置窗体标题
root.title('快递价格')
# 设置窗口大小和位置
root.geometry('1000x400+570+200')
LB1 = Listbox(root, height=7)
label1 = Label(root, text='发出地:')
label2 = Label(root, text='目的地:')
text1 = Entry(root, bg='white', width=20)
text2 = Entry(root, bg='white', width=20)
# 实时监听内容发生变化 **results**为我们的总数据
#text1.bind('<Key>', handlerAdaptor(text_change,result))
text1.bind('<Key>', lambda event:text_change(event,result))
# 列表
LB1 = Listbox(root, height=7)
LB1.bind('<ButtonRelease-1>', send)
label1.place(x=5, y=30)
text1.place(x=50, y=30)
label2.place(x=205,y=30)
text2.place(x=250, y=30)
root.mainloop()

  • 写回答

1条回答 默认 最新

  • 張公㜽 2023-03-10 11:19
    关注

    只用过 Qt, 可以参考注册回调的方式, 试试监听 FocusOut 的事件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思