Python tkinter 不能将 "pyimage4" 用作图标照片



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

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()
在这种情况下,">

加载器"作为工具窗口运行,没有图标,但主"Main_window"有它。如何解决这个问题?

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

我不得不self.loader = Tk()self.loader = Toplevel()

检查您的代码。进度条在tkinter.tkk中定义,因此您需要将tkinter.tkk导入为

from tkinter import *
from tkinter.ttk import *
....
img = PhotoImage(r'C:menu-16.png'))
...
root.tk.call('wm', 'iconphoto', root._w, PhotoImage(r'C:menu-16.png'))

由于有一个额外的),请删除)并将file=添加到PhotoImage并从ttk.Progressbar中删除ttk

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

并且您已将类定义为Main_Window()并且您正在调用Main_window().

带进度条的 tkinter GUI

最新更新