首页 > 解决方案 > Python tkinter 不能使用“pyimage4”作为iconphoto

问题描述

在我的程序中,我有一个主窗口,我想在该主窗口初始化之前添加一个加载窗口,但我无法为此加载窗口添加图标。那里有我的代码:

from tkinter import *
import tkinter.ttk as ttk

root = Tk()
root.withdraw()
root.title('BINGO')

class Loader():
    def __init__(self):
        self.loader = Tk()
        try:
            img = PhotoImage(r'C:\menu-16.png')
            self.loader.tk.call('wm', 'iconphoto', self.loader._w, img)
        except:
            self.loader.attributes('-toolwindow', True)
        self.loader.title('BINGO')
        self.frame = LabelFrame(self.loader)
        self.frame.pack(fill=BOTH, pady=2,padx=2)
        self.label = Label(self.frame, text='Loading...', font=('segoe', 12))
        self.label.pack(side=TOP, pady='4')
        self.progress_bar = ttk.Progressbar(self.frame, mode='determinate', length=464)
        self.progress_bar.pack(side=TOP, fill='x', pady='20')
        self.loader.update()

    def bar(self, value):
        self.progress_bar['value'] += value
        self.loader.update()

    def destroy(self):
        self.loader.destroy()

loader = Loader()
loader.bar(5)

class Main_Window():
    def __init__(self):
        self.mframe = LabelFrame(root)
        pass

loader.bar(100)

root.tk.call('wm', 'iconphoto', root._w, PhotoImage(r'C:\menu-16.png'))

loader.destroy()

Application = Main_Window()
root.mainloop()

在这种情况下,“loader”作为没有图标的工具窗口运行,但主“Main_window”有它。如何解决这个问题?

标签: pythonpython-3.xtkinter

解决方案


我找到了我的问题的解决方案:

不得不变成 self.loader = Tk() self.loader = Toplevel()


推荐阅读