You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Tkinter输入框的Google搜索式联想下拉功能?

Tkinter 输入框自动匹配实现(类似谷歌搜索栏)

以下是完整的实现代码,能实现输入时实时显示fruits数组中的匹配选项,点击选项自动填充到输入框:

import tkinter as tk
from tkinter import ttk

def on_entry_change(event):
    # 获取输入框内容
    input_text = entry.get().lower()
    # 清空列表框
    listbox.delete(0, tk.END)
    
    if input_text:
        # 过滤匹配的水果(不区分大小写)
        matches = [fruit for fruit in fruits if input_text in fruit.lower()]
        for match in matches:
            listbox.insert(tk.END, match)
        # 显示列表框(如果有匹配项)
        if matches:
            listbox.place(x=entry.winfo_x(), y=entry.winfo_y() + entry.winfo_height())
        else:
            listbox.place_forget()
    else:
        # 输入为空时隐藏列表框
        listbox.place_forget()

def on_listbox_select(event):
    # 获取选中的项并填充到输入框
    selected = listbox.get(listbox.curselection())
    entry.delete(0, tk.END)
    entry.insert(0, selected)
    # 隐藏列表框
    listbox.place_forget()

def hide_listbox(event):
    # 点击输入框和列表框以外的区域时隐藏列表框
    if event.widget != entry and event.widget != listbox:
        listbox.place_forget()

# 初始化主窗口
root = tk.Tk()
root.title("自动匹配搜索框")
root.geometry("400x300")

# 水果数组
fruits = [
    "Apple", "Banana", "Cherry", "Date", "Elderberry",
    "Fig", "Grape", "Honeydew", "Kiwi", "Lemon",
    "Mango", "Orange", "Papaya", "Quince", "Raspberry",
    "Strawberry", "Tangerine", "Watermelon"
]

# 创建输入框
entry = ttk.Entry(root, font=("Arial", 12))
entry.pack(pady=20, padx=20, fill=tk.X)
entry.bind("<KeyRelease>", on_entry_change)

# 创建匹配列表框(初始隐藏)
listbox = tk.Listbox(root, font=("Arial", 12), width=entry.winfo_width())
listbox.bind("<<ListboxSelect>>", on_listbox_select)

# 绑定窗口点击事件,点击其他区域隐藏列表框
root.bind("<Button-1>", hide_listbox)

root.mainloop()

关键实现细节:

  • 实时匹配触发:绑定<KeyRelease>事件,每次输入按键松开后立即执行匹配逻辑,保证响应速度。
  • 不区分大小写匹配:将输入文本和水果名称统一转为小写后判断包含关系,避免大小写影响匹配结果。
  • 动态显示/隐藏列表框:根据是否有匹配项决定列表框的显示状态,输入为空或无匹配时自动隐藏。
  • 选项填充逻辑:点击列表框选项时,自动将选中内容填入输入框并隐藏列表框。
  • 外部点击隐藏:绑定窗口左键点击事件,点击输入框和列表框以外区域时隐藏列表框,优化界面整洁度。

内容的提问来源于stack exchange,提问作者Pascal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:42:24