У меня есть код, в котором я пытаюсь напечатать список списков в ярлыке tkinter, но он работает не так, как я хочу. Когда я запускаю скрипт ниже, он будет искать введенный текст в list.txt и печатать его в метке tkinter. По мере ввода нового текста предыдущий искомый текст должен очищаться, и новый текст должен отображаться на основе результатов поиска в файле list.txt. Но предыдущий текст не очищается. Вот частичный код:
import tkinter as tk
import re
from tkinter import Label
class App(tk.Tk):
def __init__(self):
super().__init__()
self.var = tk.StringVar()
self.var.trace("w", self.show_message)
self.entry = tk.Entry(self, textvariable=self.var)
self.label = tk.Label(self)
self.entry.pack()
self.label.pack()
def show_message(self, *args):
value = self.var.get()
scen = []
text = "{}".format(value) if value else scen.clear()
if text:
words = re.split('[ ]', text.lower())
with open('list.txt','r') as mfl:
scen.clear()
for line in mfl:
if all(word in line.lower() for word in words):
txt = re.split("[._ -]",line)
scen.append(txt[:-1])
for i in range(len(scen)):
exec('Label%d=Label(app,text="%s")\nLabel%d.pack()'%(i,scen[i],i))
if __name__ == "__main__":
app = App()
app.mainloop()