Python 在tkinter标签中显示图片

Python 在tkinter标签中显示图片,python,tkinter,Python,Tkinter,在上面的代码中,为什么图片显示在window1中而不是window2中?如果图像作为一个参数传递给函数,它就会工作!使用Python3运行。变量img是函数picture()的一个局部变量,该函数在函数退出后会收集垃圾。保存对照片的引用,例如: import tkinter as tk from tkinter import ttk def picture(): window2 = tk.Toplevel() window2.title("Window2") win

在上面的代码中,为什么图片显示在window1中而不是window2中?如果图像作为一个参数传递给函数,它就会工作!使用Python3运行。

变量
img
是函数
picture()
的一个局部变量,该函数在函数退出后会收集垃圾。保存对照片的引用,例如:

import tkinter as tk
from tkinter import ttk


def picture():

    window2 = tk.Toplevel()
    window2.title("Window2")
    window2.geometry("300x300")
    window2.configure(background='grey')

    f =  "C:\\Users\\Bob\\Documents\\Python\\bb.gif"
    img = tk.PhotoImage(file =f)

    panel = ttk.Label(window2, width= 100, background = "green", image =img)
    panel.grid(column=1, row=1, sticky=(tk.W,tk.E))

#Start the GUI

window = tk.Tk()
window.title("Window1")
window.geometry("300x300")
window.configure(background='grey')

f =  "C:\\Users\\Bob\\Documents\\Python\\bb.gif"
img = tk.PhotoImage(file = f)

panel = ttk.Label(window, width= 100, background = "green", image =img)
panel.grid(column=1, row=1, sticky=(tk.W,tk.E))
picture()

window.mainloop()
作为函数中的最后一行

panel.image = img