首页 > 解决方案 > Tkinter 过滤列表框不会更新

问题描述

我正在尝试通过按钮激活过滤列表框,列表框本身可以正常工作,但是当我在函数内缩进它时,过滤功能停止工作,找到下面的代码:

import tkinter as tk
a = ['Adam', 'Lucy', 'Barry', 'Bob']
def bot(*args):
    
    root = tk.Tk()
    def update_listbox(*args):
        search_term = search_var.get()
        listbox.delete(0, tk.END)
        for item in all_items:
            if search_term.lower() in item.lower():
                listbox.insert(tk.END, item)
        

    search_var = tk.StringVar()
    search_var.trace('w', update_listbox)
    searchbox = tk.Entry(root, textvariable=search_var)
    searchbox.pack(fill=tk.X, expand=False)

    listbox = tk.Listbox(root)
    for i in a:
        listbox.insert(tk.END, i)        
    listbox.pack()
    all_items = listbox.get(0, tk.END)
    root.mainloop()

RootTest = tk.Tk()
bott = tk.Button(RootTest, text = 'test', )
bott.pack()
bott.config(command= bot)
RootTest.mainloop()

标签: pythontkinterlistbox

解决方案


推荐阅读