Что ж, у вас есть некоторые проблемы при создании элементов.
Сначала я предоставлю исправленный код, а затем объясню:
from tkinter import *
def part_search():
# The sole purpose of this function is to update elements, not creating them.
mtext = ment.get()
print(mtext)
mlabel2.config(text=mtext)
msearch = open(r"Parts.txt")
print('again')
for line in msearch:
if mtext in line:
listbox.insert(END, str(line))
listbox.config(yscrollcommand=scrollbar.set,width=0, justify=LEFT)
scrollbar.config(command=listbox.yview)
msearch.close()
return
# This code is your original code for creating the first elements
mGui = Tk()
mGui.configure(bg="orange")
ment = StringVar()
mGui.geometry ("1000x500+200+300")
mGui.title ("Parts Finder")
mlabel1 = Label(mGui, text="Type in search term", font="Times 20", bg="orange")
mlabel1.pack()
mentry = Entry(textvariable=ment, font="Times 20", width = 50, bg="orange")
mentry.pack()
mentry.focus()
mlabel3 = Label(mGui, text="Now click GO", font="Times 20", bg="orange")
mlabel3.pack()
mbutton = Button(mGui, text ="Go", font="Times 20", command = part_search, bg="grey")
mbutton.pack()
# here is the moved code from the function
Finder = ()
scrollbar = Scrollbar(mGui)
scrollbar.pack(side=RIGHT, fill=Y)
listbox = Listbox(mGui)
listbox.pack(fill=BOTH, expand=1)
listbox.configure(justify=CENTER, bg="orange", font="Times 16")
mlabel2 = Label(mGui)
mlabel2.pack()
while True:
# ball.draw()
mGui.update_idletasks()
mGui.update()
Что случилось?
В своем коде внутри функции part_search
вы создали элементы и отобразили их внутри пользовательского интерфейса.Затем при каждом вызове вы снова создаете эти элементы и складываете их в свой макет.Они только что исчезли и были под вашим списком.
Другое дело, что вы установили список в полный рост, который выдвигал вашу метку ниже нижней части окна.
Вы должны использовать макет Tk
схемы (укладка, укладка и т. д.).См. Официальную документацию здесь
Как можно избежать ошибок этого типа?
Вы должны разделить код, который создает пользовательский интерфейс, и код, которыйпредоставлять ему информацию и реагировать на действия пользователя.Быстрый поиск в YouTube и базовые учебники помогут вам начать.Гораздо проще решать одну проблему за раз, и существует множество шаблонов и знаний о дизайне пользовательского интерфейса, это действительно полезно даже для разработчиков и исследователей бэкэнда, которые создают пользовательские интерфейсы только для POC.
Удачи!