如何在 Tkinter 中创建具有自动完成功能的组合框?
tkinterpythongui-programming更新于 2025/6/18 4:28:17
Tkinter 组合框小部件是实现应用程序中下拉菜单的有用小部件之一。它使用顶部的 Entry 小部件和 ListBox 小部件的组合。我们可以通过在 Entry 字段中键入项目名称(如果菜单列表中存在)来选择菜单项。但是,有时,我们可能需要使用自动完成来选择菜单项。
为了创建自动完成组合框,我们将首先创建一个 Listbox 来列出菜单,并创建一个 Entry 小部件来显示所选菜单。您可以将"Keyrelease"事件与条目小部件绑定,以在列表中搜索特定关键字。如果该项目存在,我们将更新 Listbox 小部件。
示例
在此示例中,我们将创建两个函数,
- 函数 check(e) 将查找输入的项目是否存在于列表中。如果项目与输入的关键字匹配,我们将通过插入特定数据来更新 Entry 小部件。
- 函数 update(data) 将通过在 Entry 小部件中插入值来更新 Entry 框。
# 导入所需的库
from tkinter import *
from tkinter import ttk
# 创建 tkinter 框架或窗口的实例
win= Tk()
# 设置窗口的大小
win.geometry("700x350")
# 设置窗口的标题
win.title("Combobox- TutorialsPoint")
# 使用列表中选定的项目更新 Entry 小部件
def check(e):
v= entry.get()
if v=='':
data= values
else:
data=[]
for item in values:
if v.lower() in item.lower():
data.append(item)
update(data)
def update(data):
# Clear the Combobox
menu.delete(0, END)
# Add values to the combobox
for value in data:
menu.insert(END,value)
# 添加标签小部件
label= Label(win, text= "Demo Combobox Widget", font= ('Helvetica 15
bold'), background= "green3")
label.pack(padx= 10, pady= 25)
# 添加底部标签
text= Label(win, text="Select a Programming Language")
text.pack(padx= 15,pady= 20)
# 创建条目小部件
entry= Entry(win, width= 35)
entry.pack()
entry.bind('<KeyRelease>',check)
# 创建列表框小部件以显示项目列表
menu= Listbox(win)
menu.pack()
# 创建所有菜单项的列表
values= ['Python', 'C++', 'Java','Ruby on Rails', 'Rust',
'GoLang','Objective-C', 'C#', 'PHP', 'Swift', 'JavaScript']
# 向我们的组合框添加值
update(values)
# 绑定组合框 onclick
win.mainloop()
输出
运行上述 Python 脚本将显示一个带有 Entry 小部件和 ListBox 的窗口。每当我们输入关键字时,它都会更新 ListBox 小部件,显示与输入的关键字匹配的结果。
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

