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运行。
答案 0 :(得分:0)
变量img
是函数picture()
的局部变量,在函数退出后会收集垃圾。保存对照片的引用,例如:
panel.image = img
作为函数的最后一行。