在tkinter标签中显示图片

时间:2018-05-14 09:11:17

标签: python tkinter

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()

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

1 个答案:

答案 0 :(得分:0)

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

panel.image = img

作为函数的最后一行。