Вместо картинки в окне отображается белый прямоугольник

У меня есть класс Window (project\bin\windiws\window.py) который я использую для создания окон. Я хочу чтобы для каждого окна были заголовок, одинаковая иконка и шапка (картинка). Если с первыми 2 у меня особых проблем не возникло, то с 3 у меня просто не отображается картинка. При этом никаких ошибок или исключений не возникает.

import tkinter as tk

class Window(tk.Tk, tk.Toplevel):
    def __init__(self, size, master=None):
        if master is None:
            tk.Tk.__init__(self)
        else:
            tk.Toplevel.__init__(self, master)
        
        self.iconphoto(False, tk.PhotoImage(file="messenger (new)\\images\\logo\\icon.ico"))
        self.title("Messenger")
        self.geometry(size)
        self.config(background="#DDD")
        self.resizable(False, False)

        x = int(str(size)[:3])
        y = 40 if x == 250 else 50

        if x == 250:
            img = tk.PhotoImage(file="messenger (new)\\images\\logo\\mini_logo.png")
        else:
            img = tk.PhotoImage(file="messenger (new)\\images\\logo\\logo.png")
        
        logo = tk.Label(self, image=img, width=x, height=y)
        logo.pack()

А для его запуска файл main.py (project\main.py)

from bin.windows.window import Window

root = Window("500x500")
# Window("250x250", root).mainloop()
root.mainloop()

После запуска появляется окно со светло серым фоном и белой шапкой вместо нужной картинки. Я пробывал использовать Pillow и Canvas вот только у меня это почему-то не работало.

Но, если убрать все эти классы и просто создать окно со всеми необходимыми параметрами, то это почему-то работает корректно.

import tkinter as tk

window = tk.Tk()
window.iconphoto(True, tk.PhotoImage(file="messenger (new)\\images\\logo\\icon.ico"))
window.title("Messenger")
window.geometry("500x500")
window.resizable(False, False)

img = tk.PhotoImage(file="messenger (new)\\images\\logo\\logo.png")
lbl = tk.Label(window, image=img)
lbl.place(width=500, height=50)

window.mainloop()

Помогите пожалуйста. Мне уже завтра сдавать этот проект, а я не могу решить эту, казалось бы простую, проблему


Ответы (0 шт):