如何在Tkinter窗口上显示图像?

如何在Tkinter窗口上显示图像?,tkinter,Tkinter,我正在尝试为图像生成器创建Tkinter GUI,在该GUI中,一旦用户单击“生成图像”按钮,它就会在窗口上显示“diff overlay.jpg”。请注意,此文件位于同一目录中 我已经创建了方法(命令)“generate”来在窗口上显示图像。但是“生成图像”按钮没有显示图像(diff overlay.jpg)。有人能帮我解决这个问题吗?谢谢 import tkinter as tk import numpy as np from PIL import ImageTk,Image #fo

我正在尝试为图像生成器创建Tkinter GUI,在该GUI中,一旦用户单击“生成图像”按钮,它就会在窗口上显示“diff overlay.jpg”。请注意,此文件位于同一目录中

我已经创建了方法(命令)“generate”来在窗口上显示图像。但是“生成图像”按钮没有显示图像(diff overlay.jpg)。有人能帮我解决这个问题吗?谢谢

import tkinter as tk

import numpy as np


from PIL import ImageTk,Image  #for image in tk

class HeatMap(tk.Tk):
    def __init__(self, parent=0):
        self.mainWindow = Frame(parent)
        self.fTop = Frame(self.mainWindow)
        self.fTop.pack(fill="both",expand =True)


        self.button = Button(self.fTop, text='Generate Image',command=self.generate)
        self.button.pack(side="right")

        self.mainWindow.pack(fill="both")

    #this should display the image on the root window
    def generate(self):
        image = Image.open('diff-overlay.jpg')
        photo = ImageTk.PhotoImage(image)
        w1 = tk.Label(root, image=photo).pack(side="right",expand=True)



root = Tk()
root.title("Image Generator")
root.geometry("1200x1200")
app=HeatMap(root)

root.mainloop()
.

我就是这样做的:

def iniImage():
    img = Image.open("image.png")
    img = img.resize((300,200), Image.ANTIALIAS)
    img = ImageTk.PhotoImage(img)
    panel = Label(window, image=img)
    panel.image = img
    panel.place(relheight=.095,relwidth=0.25,relx=0.7,rely=0.03)
为了能够使用.jpg图像,我认为您必须使用以下内容:

path = "image.jpg"

#Creates a Tkinter-compatible photo image, which can be used everywhere Tkinter expects an image object.
img = ImageTk.PhotoImage(Image.open(path))

我能够通过存储图像对象来解决它

self.iconPath = 'diff-overlay.jpg'
self.icon = ImageTk.PhotoImage(Image.open(self.iconPath))
self.icon_size = Label(root)
self.icon_size.image = self.icon  
self.icon_size.configure(image=self.icon)
self.icon_size.pack(side=LEFT,expand=True)

这个网站上可能有几十个关于没有显示图像的问题。问这个问题之前你做过什么调查吗?