Python 如何在运行时加载映像tkinter?

Python 如何在运行时加载映像tkinter?,python,image,user-interface,tkinter,tk,Python,Image,User Interface,Tkinter,Tk,我正在尝试浏览图像文件并使用tkinter将其加载到标签中。我无法加载新浏览的图像。我只是试图显示预览的图像在标签上,现在它正在加载完整的图像,因此只有部分图像被捕获。如何减小标签中加载的图像大小,以便在标签上预览完整图像。 源代码: root = Tk() def browsefunc(): filename = fd.askopenfilename() print(filename) ss=ImageTk.PhotoImage(Image.open(filename)

我正在尝试浏览图像文件并使用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()

首先,你没有在你的方法中为你的图像保留一个引用,这可能会导致,你的图像根本不会出现

关于调整大小,您可以使用


感谢您提供的解决方案,但我遇到了一个错误“无法调用“winfo”命令:应用程序已被销毁”,您问题中的给定代码不应产生该错误。看起来,此时无法访问/销毁您的标签。它最初工作正常,但当我尝试使用按钮单击文件浏览器获取图像时,图像正在加载,但应用调整大小会抛出错误“未知重采样过滤器”我使用了调整大小(500500)注意第二组括号<代码>调整大小((500500))。
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)