Не отображается иконка приложения на toplevel в python customtkinter
Не отображается иконка на окне ctktoplevel, когда на основном окне всё отображается. Вот код:
def Second():
second = CTkToplevel(root)
second.title("second")
second.iconbitmap("icon.ico")
root = CTk()
root.title("first")
root.iconbitmap("icon.ico")
second_ = CTkButton(root, text="Second window", command=Second)
second_.pack()
root.mainloop()
В функции Second прописано, что, нужно создать второстепенное окно second и ниже задана иконка icon.ico, она задана и в основном окне, но в основном отображается, а в окне second нет.
Ответы (2 шт):
Данная проблема уже обсуждалась на сайте, если коротко решение:
def Second():
second = CTkToplevel(root)
second.title("second")
second.after(300, lambda: second.iconbitmap("icon.ico")) # second.iconbitmap("icon.ico")
У меня, например, в программах это решается вот так:
images_app=tkinter.PhotoImage(data=base64.b64decode(r"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAZElEQVR42u3TwQ2AQAhEUeiMUizNUugM7xoxm4ybNf65QuAdwM2sTBsfbS6VwAEA+AVgaPpbgNhDsjy3BLAgQH1kHfYekKLHDAcA4COAa2Uu4JwCAACAEvCUGYBWAWBRgDYt4AB1vYwN5931twAAAABJRU5ErkJggg=="))
root.iconphoto(True, images_app)
Если True, эта иконка будет автоматом назначаться для всех дочерних окон. Конечно же можно использовать не закодированный в base64 вариант, а непосредственно имя файла. Рекомендую также отказаться от использования .ico. Python почему-то плохо работает с этим форматом. Используйте .png. В этом случае команда закрепления иконки с наследованием в дочерних окнах будет выглядеть, например, так: root.iconphoto(True, "myicon.png")