import tkinter as tkfrom tkinter import filedialogfrom PIL import ImageTk, Imageimport osimport argparseimport numpy as npdb_path = "/fulldatabase/"output = Noneoutput_path = Nonedef test(): root = tk.Tk() root.withdraw() dirname = tk.filedialog.askdirectory(parent=root, initialdir="./", title='select input query folder') root.destroy() return (dirname)if __name__ == "__main__": in_dir = test() path = os.listdir(in_dir) parser = argparse.ArgumentParser() parser.add_argument('--output', '-o') args = parser.parse_args() output_path = args.output window = tk.Tk() window.title("My App") window.geometry("1024x800") app = Application(window, in_dir, path) window.mainloop() output.close()我有一个输入查询文件夹,其中包含一组不同的花卉图像,例如 rose_3、lily_5 和 jasmine_2,其中下划线后的数字表示其实例编号。我想从输入文件夹中选择一个图像并将其显示在 tkinter 窗口上。我还想在同一个 tkinter 窗口上显示玫瑰的所有其他图像(从完整数据库,即另一个文件夹中读取)说 rose_1、rose_2、rose_4 和 rose_5(如果我在数据库中有 5 个玫瑰图像)它的右侧同时低于另一个。所有这一切都与此代码完美配合,但 GUI 经常冻结。有人可以帮我吗?
2 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
您应该在单独的线程中加载(以及可能的进一步处理)图像。
创建一个线程来加载您的图像,一旦我完成了该任务,您就可以将图像发送到 GUI 进行渲染。
大多数甚至不是所有的 GUI 框架都使用一个主线程(其中不断运行一个循环)来专门处理与 GUI 相关的任务,例如处理用户输入(鼠标、键盘等)、渲染等。一旦您在该线程中引入不同的负载(例如加载图像),该线程就不再能够仅专注于特定于 GUI 的任务。这会导致您的 GUI 冻结。
添加回答
举报
0/150
提交
取消