Я видел пару сообщений, похожих на мой вопрос, но не совсем так, поэтому извиняюсь, если это повторяющийся вопрос.Как я могу автоматически обновлять свой список в tkinter?
Я использую tkinter для чтения папки, создаю список, в котором перечислены все файлы (все они будут файлами .tif), и пользователь выбирает изображение, которое они хотят просмотреть. К сожалению, файлы будут добавлены и удалены, поэтому я хочу обновить свой список автоматически. Вот некоторые из кода, который у меня есть до сих пор:
from tkinter import *
from PIL import Image, ImageTk
import os
file_path = "C:/Users/USX27512/Desktop/Python UI/Test_TIFFs"
root = Tk()
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
os.chdir(file_path)
self.grid()
self.canv = Canvas(self, relief=SUNKEN)
self.canv.grid(row=2, column=1, columnspan=5, sticky=N)
self.canv.config(width=500, height=500)
self.canv.config(highlightthickness=0, background="black")
self.view_files()
def view_files(self):
lb = Listbox(self, height=20)
lb.update_idletasks()
files = sorted(os.listdir(file_path), key=lambda x: os.path.getctime(os.path.join(file_path, x)))
for file in files:
if os.path.isfile(os.path.join(file_path, file)):
lb.insert(END, file)
lb.bind("<Double-Button-1>", self.on_double)
lb.grid(row=2, column=0, sticky=NW)
def on_double(self, event):
widget = event.widget
selection = widget.curselection()
value = widget.get(selection[0])
sbarV = Scrollbar(self, orient=VERTICAL)
sbarH = Scrollbar(self, orient=HORIZONTAL)
sbarV.config(command=self.canv.yview)
sbarH.config(command=self.canv.xview)
self.canv.config(yscrollcommand=sbarV.set)
self.canv.config(xscrollcommand=sbarH.set)
sbarV.grid(row=2, column=6, sticky=N+S)
sbarH.grid(row=3, column=1, columnspan= 5, sticky=E+W)
self.im = Image.open(value)
image_width, image_height = self.im.size
self.canv.config(scrollregion=(0, 0, image_width, image_height))
self.im2 = ImageTk.PhotoImage(self.im)
self.imgtag = self.canv.create_image(0,0, anchor=NW, image=self.im2)
app = Application(root)
root.mainloop()
Любые предложения?
Вы спрашиваете, как автоматически проверять изменения файловой системы? Вы спрашиваете, как обновить список после его создания? С какой проблемой вы сталкиваетесь? –
@BryanOakley Я знаю, как изменить список, я считаю, что ищу автоматическую проверку изменений файловой системы. Мое понимание tkinter заключается в том, что mainloop сидит и ждет изменений, может быть, это кнопка, нажимающая клавишу ввода клавиатуры, а затем она прокручивается и вносит изменения, а затем снова ждет. Итак, как мне изменить файловую систему, чтобы сообщить mainloop о том, как это изменить? – awwende