Python 从输入框中获取搜索词
我正在尝试为一个自动完成的原型创建一个GUI,我是tkinter的新手。我想在按下空格时获取整个输入,但我无法这样做。其思想是获取文本框中的所有条目,以便我可以在函数调用中进行一些分析 代码如下:Python 从输入框中获取搜索词,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我正在尝试为一个自动完成的原型创建一个GUI,我是tkinter的新手。我想在按下空格时获取整个输入,但我无法这样做。其思想是获取文本框中的所有条目,以便我可以在函数调用中进行一些分析 代码如下: def kp(event): app.create_widgets(1) import random def getFromScript(text): #########THIS IS A PLACE HOLDER FOR ACTUAL IMPLEMENTATION i= r
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()
def kp(事件):
app.create_小部件(1)
随机输入
def getFromScript(文本):
#########这是实际实施的一个占位符
i=random.randint(1100)
return['hello'+str(i),'helou'+text]
从tkinter进口*
课程申请(框架):
def uuu init uuu(self,master=None):
帧。\uuuu初始化(自,主)
self.pack()
self.create_小部件(0)
#创建主GUI窗口
def create_小部件(self,i):
self.search_var=StringVar()
self.search\u var.trace(“w”,lambda名称、索引、模式:self.update\u列表(i))
self.lbox=Listbox(self,宽度=45,高度=15)
如果i==0:
self.entry=entry(self,textvariable=self.search\u var,width=13)
self.entry.grid(行=0,列=0,padx=10,pady=3)
self.lbox.grid(行=1,列=0,padx=10,pady=3)
#用于更新列表/执行搜索的函数。
#需要在此处调用它来填充列表框。
自我更新清单(一)
def更新列表(自我,i):
search_term=self.search_var.get()
#只是一个用于填充列表框的通用列表
如果(i==0):
lbox_list=[“优秀”、“非常好”、“破旧”、“不受欢迎”]
如果(i==1):
lbox_list=getFromScript(搜索词)######在此处传递文本
self.lbox.delete(0,结束)
对于lbox_列表中的项目:
如果在item.lower()中搜索\u term.lower():
self.lbox.insert(结束,项目)
root=Tk()
title('Filter Listbox Test')
root.bind_all(“”,kp)
应用程序=应用程序(主程序=根)
app.mainloop()
任何形式的帮助都是值得赞赏的。提前感谢问题是您正在为每个
create\u小部件
调用创建一个新的StringVar
在\uuuu init\uuuu
中创建StringVar
class Application(Frame):
def __init__(self, master=None):
...
self.search_var = StringVar()
...