Tkinter 图像是空白的

Kev*_*n.a 1 python tkinter pillow

我有以下python代码:

from tkinter import *
from PIL import ImageTk, Image
import sys, os
height = 5
width = 8

# window = Tk()


class NSUI(Frame):
    def reload(self):
        os.execl(sys.executable, sys.executable, *sys.argv)
    def __init__(self, master=None):
        """
        Initialise process application
        """
        Frame.__init__(self, master)
        self.grid()
        self.master.title('PROGProject')
        # Configure columns
        for r in range(7):
            self.master.rowconfigure(r, weight=1)
        # Create columns
        for c in range(7):
            self.master.columnconfigure(c, weight=1)
            Button(master, text = "Actuele reistijden", bg = '#005ca0', fg = 'white', font = "Verdana 10", width = width, height = height, command = self.reload).grid(row = 5,column = 2,sticky = E+W)
            Button(master, text = 'Storingen', bg = '#005ca0', fg = 'white', font = "Verdana 10", width = width, height = height, command = self.reload).grid(row = 5,column = 4,sticky = E+W)

        Label(master, text = 'Welkom bij NS',font = "Verdana 50", bg = "#EFD10E", fg = "#005ca0").grid(row=0,column=1, columnspan=5)

        path = "test.jpg"
        img = ImageTk.PhotoImage(Image.open(path))
        panel = Label(root, image=img).grid(column=2,row=2)






root = Tk()

root.configure(background="#EFD10E")
root.tk.call('tk', 'scaling', 1.5)

app = NSUI(master=root)
app.mainloop()
Run Code Online (Sandbox Code Playgroud)

它应该加载一个图像,图像在正确的目录中,我确定了这一点。但由于某种原因,它只是加载一个白色方块。有谁知道这怎么可能?

我添加的相关代码位:

path = "test.jpg"
img = ImageTk.PhotoImage(Image.open(path))
panel = Label(root, image=img).grid(column=2,row=2)
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Avi*_*ión 11

您必须将图像锚定到对象上。

path = "test.jpg"
img = ImageTk.PhotoImage(Image.open(path))
panel = Label(root, image=img)
panel.photo = img
panel.grid(column=2,row=2)
Run Code Online (Sandbox Code Playgroud)