【发布时间】:2020-06-01 19:36:49
【问题描述】:
假设我想通过 tkinter 控制台查看目录 filedir 中有“n”个图像文件。现在,我想在必要时跳过一些文件,使用调用函数 nextFile() 的按钮单击事件。
例如
import os
def nextFile():
global img
img_2 = process(img)
return img_2
window = tk.Tk()
window.title("File Viewer")
files = os.listdir(filedir)
button1 = tk.Button(window, text="Browse Files...", fg="black", command=askopenfilename)
button2 = tk.Button(window, text="SELECT", width=50, command=nextFile)
canvas = tk.Canvas(window, width=width, height=height)
button1.pack(side=tk.LEFT)
button2.pack(side=tk.BOTTOM)
canvas.pack()
for f in files:
img = cv2.cvtColor(cv2.imread(filedir + '/' + f), cv2.COLOR_BGR2RGB)
photo = ImageTk.PhotoImage(image=Image.fromarray((img))
canvas.create_image(0, 0, image=photo, anchor=tk.CENTER)
window.mainloop()
感谢任何帮助。谢谢!
【问题讨论】:
-
您的函数中不需要
return。此外,此函数每次调用时都会创建一个tk的新实例。我会做一些改变。那或者你的缩进搞砸了。您将根窗口命名为my_window,然后告诉您的小部件放置在window上。这不起作用,应该出错。 -
抱歉缩进。我现在编辑了它。
-
command=askopenfilename对你没有任何好处。按钮不能对任何函数/方法返回的值做任何事情。 -
我需要从文件夹中递归加载图像,并在必要时跳过。
-
您可以做的就是将该目录中的所有文件名加载到一个列表中。然后构建一个函数,根据列表索引在点击时加载图像。
标签: python-3.x image tkinter