如何在运行时加载图像tkinter?

时间:2017-07-18 06:42:34

标签: python image user-interface tkinter tk

我正在尝试浏览图像文件并使用tkinter将其加载到标签中。我无法加载新浏览的图像。我只是想在标签中显示图像的预览,因为它正在加载完整的图像,因此只捕获了图像的某些部分。如何减少标签中加载的图像大小,以便完整图像被预览标签。 源代码:

root = Tk()
def browsefunc():
    filename = fd.askopenfilename()
    print(filename)
    ss=ImageTk.PhotoImage(Image.open(filename))
    panel.configure(image=ss)

file=r"C:/img.jpg"
img = ImageTk.PhotoImage(Image.open(file))
browsebutton = Button(root, text="Browse", command=browsefunc, justify ="center")
panel = Label(root,height="500",width="500", image = img,justify="left")
panel.pack(side = "top", expand = "yes")

browsebutton.pack(side="bottom")
root.mainloop()

1 个答案:

答案 0 :(得分:1)

首先,您没有在方法中保留图像的参考,可能导致该图像,您的图像根本不显示。

关于调整大小,您可以使用PIL.Image.resize()

def browsefunc():
    filename = fd.askopenfilename()
    print(filename)
    si = Image.open(filename)
    h = panel.winfo_height() # label's current height
    w = panel.winfo_width() # label's current width
    si = si.resize((h,w)) 
    ss = ImageTk.PhotoImage(si)
    panel.image=ss # keeping a reference!!
    panel.configure(image=ss)