使用以下代码,我无法在 tkinter 单元格中显示图像:
from tkinter import *
from tkinter import filedialog
from PIL import Image, ImageTk
root = Tk()
root.geometry=("1000x1000")
def orig():
orig_image = filedialog.askopenfilename(filetypes=[("Image file", "*.jpg"), ("All files", "*.")])
my_img = ImageTk.PhotoImage(Image.open(orig_image))
lbl = Label(image=my_img)
lbl.grid(row=0, column=0)
orig()
root.mainloop()
但是,通过将其从方法中取出,它就可以正常工作:
from tkinter import *
from tkinter import filedialog
from PIL import Image, ImageTk
root = Tk()
root.geometry=("1000x1000")
orig_image = filedialog.askopenfilename(filetypes=[("Image file", "*.jpg"), ("All files", "*.")])
my_img = ImageTk.PhotoImage(Image.open(orig_image))
lbl = Label(image=my_img)
lbl.grid(row=0, column=0)
root.mainloop()
我错过了什么?
这是一个更大项目的一部分,我想显示“原始” OCR 扫描图像,然后使用其他方法在原始图像旁边(在另一列中)显示“校正后的图像”,以显示该校正是否有所改善。
您的代码存在一些问题
*遗憾的是,几何方法分配不正确。应该调用它而不是分配它。
*对于第一个代码块,您定义了函数 orig() 但让它保持未求值状态。
*需要将 PhotoImage 对象作为属性保留,以防止其在垃圾收集中丢失。
尝试这种方法:
您需要参考图像。
在第 12 行添加此内容,
lbl.image= my_img
编辑:
截屏: