Не работает метод iconbitmap. Python, tkinter

скриншот

def window():
    w = Tk()
    w.title("Голосовой помощник 'Челси'")
    w.geometry("500x400")
    w.resizable(width=False, height=False)
    
    w.iconbitmap("micophone.ico")

    # Создание холста (Canvas), который заполняет всё окно
    cnv = Canvas(w, bg="#9934eb")  # Устанавливаем синий цвет фона
    cnv.pack(fill="both", expand=True)  # Растягиваем холст на всё окно

    btn = Tk.Button(text= "Click me", command=on_button_click)
    cnv.create_window(250, 200, window=btn)
    w.mainloop()

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

Автор решения: Fox Fox
icon = PhotoImage(file='icon.png')
root.iconphoto(True, icon)

file должен быть .png, а имя файла ПОЛНЫМ, если не хотите сюрпризов с неспособностью приложения отыскать такой файл. Всегда работайте с полным путями используемых файлов! Всегда!

А вообще, это всё примитивщина. Я не завишу от файлов и имён, использую изображение непосредственно в виде кодированной строки. Пример:

images_app = tkinter.PhotoImage(data = base64.b64decode(r"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAZElEQVR42u3TwQ2AQAhEUeiMUizNUugM7xoxm4ybNf65QuAdwM2sTBsfbS6VwAEA+AVgaPpbgNhDsjy3BLAgQH1kHfYekKLHDAcA4COAa2Uu4JwCAACAEvCUGYBWAWBRgDYt4AB1vYwN5931twAAAABJRU5ErkJggg=="))
root.iconphoto(True, images_app)

Закодировать изображение в виде строки достаточно просто.

→ Ссылка