Пропадает изображение (PhotoImage ) в виджете Label
Изображение один раз моргает и пропадает.
import tkinter as tk
import tkinter.filedialog as fd
root=Tk()
frame=Frame(root,width=300,height=300)
frame.pack()
def img():
global root,frame
photo = tk.PhotoImage(file='path')
h=Label(frame, image=photo)
h.place(x=0,y=0)
frame.update()
root.update()
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Жаль, но вы так и не предоставили минимальный воспроизводимый пример.
Я не знаю, что вы делаете или будите делать в вашем коде, но на сейчас проблема в том, что переменная photo удаляется сборщиком мусора после выхода из функции img(). Вам надо как-то продлить срок жизни этой переменной.
Попробуйте так:
import tkinter as tk
import tkinter.filedialog as fd
root = tk.Tk()
frame = tk.Frame(root, width=500, height=500)
frame.pack()
photo = None # +++
def img():
# global root, frame, photo
global photo # +++
photo = tk.PhotoImage(file='lena2.png')
h = tk.Label(frame, image=photo)
h.place(x=0, y=0)
# frame.update()
# root.update()
img()
root.mainloop()
или так:
from tkinter import *
class Window(Tk):
def __init__(self):
super().__init__()
if __name__ == "__main__":
main = Window()
main.geometry("500x500")
main.resizable(height=False, width=False)
main.title("Title lena2.png")
bg_img = PhotoImage(file = "lena2.png")
limg = Label(main, i=bg_img)
limg.pack()
main.mainloop()
lena2.png
Вам надо посмотреть в сторону ООП.

