Я возился с Tkinter и Python.У меня есть основной графический интерфейс с парой кнопок, одна кнопка уходит и делает что-то, что занимает некоторое время, которое является переменным.Проблема в том, что когда я нажимаю на эту кнопку, весь мой графический интерфейс блокируется / не отображается правильно - я думаю, потому что он пытается выполнить эти вещи, которые занимают некоторое время, и он блокирует графический интерфейс.
Я посмотрелв потоки и очереди, но я не могу понять это.Я думаю, мне нужно запустить мой метод поиска в потоке, а затем поставить в очередь результаты, когда они возвращаются, и обновлять список по мере их возвращения?
Я нахожусь в Windows, если это имеет значение для путиЯ использую темы.
С уважением
Дэвид
Основной код ниже.
class Search:
def __init__(self, master):
self.seeds = []
frame = Frame(master, width=700, height=500)
frame.pack_propagate(0)
frame.pack(expand=YES, fill=BOTH)
#
# Search results
#
l2 = Label(frame, text="results")
l2.pack(anchor=W)
self.resultfield = Listbox(frame, selectmode=BROWSE)
self.resultfield.grid(row=3, column=1, sticky=N+W+S+E, columnspan=3)
self.resultfield.pack(fill=BOTH)
frame1 = Frame(frame)
frame1.pack()
# Button to action the search
self.getSearchbut = Button(frame1, text="Do Search", command=self.getSearch)
self.getSearchbut.grid(row=1, column=2)
self.getSearchbut.pack()
def getSearch(self):
sa = SearchApi(self.seeds)
results = sa.lookup(self)
for result in results:
self.resultfield.insert(END, user)
def putCSV(self):
print "put the csv files"
class SearchApi:
def __init__(self, seeds):
self.seeds = seeds
def lookup(self):
results = []
# I do something here that takes a while
return results
if __name__ == "__main__":
root = Tk()
root.title("Search")
app = Search(root)
root.mainloop()