从输入框中获取搜索词

Get search terms from input box

我正在尝试为自动完成原型创建一个 GUI,我是 tkinter 的新手。我想在按下 Space 时获得整个输入,但我无法这样做。我的想法是获取文本框中的所有条目,以便我可以在函数调用中进行一些分析。

这是代码:

def kp(event):
    app.create_widgets(1)

import random
def getFromScript(text):
    #########THIS IS A PLACE HOLDER FOR ACTUAL IMPLEMENTATION
    i= random.randint(1,100)
    return ['hello'+str(i),'helou'+text]

from tkinter import *
class Application(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)

        self.pack()
        self.create_widgets(0)


     # Create main GUI window
    def create_widgets(self,i):
        self.search_var = StringVar()
        self.search_var.trace("w", lambda name, index, mode: self.update_list(i))

        self.lbox = Listbox(self, width=45, height=15)

        if i==0:
             self.entry = Entry(self, textvariable=self.search_var, width=13)
             self.entry.grid(row=0, column=0, padx=10, pady=3)

        self.lbox.grid(row=1, column=0, padx=10, pady=3)

        # Function for updating the list/doing the search.
        # It needs to be called here to populate the listbox.
        self.update_list(i)


    def update_list(self,i):

        search_term = self.search_var.get()#### THIS LINE SHOULD READ THE TEXT

        # Just a generic list to populate the listbox
        if(i==0):
             lbox_list = ['Excellent','Very Good','Shabby', 'Unpolite']
        if(i==1):
             lbox_list = getFromScript(search_term)####### PASS TEXT HERE

        self.lbox.delete(0, END)
        for item in lbox_list:
            if search_term.lower() in item.lower():
                self.lbox.insert(END, item)

root = Tk()
root.title('Filter Listbox Test')
root.bind_all('<space>', kp)

app = Application(master=root)

app.mainloop()

非常感谢任何形式的帮助。提前致谢

问题是您在每次 create_widgets 调用时都创建了一个新的 StringVar

在您的 __init__ 中创建 StringVar

class Application(Frame):
    def __init__(self, master=None):
        ...
        self.search_var = StringVar()
        ...