所以我试图将一些图片放到我的窗口中,每当我运行程序时它都会给我这个错误:
_tkinter.TclError:遇到一个不受支持的批评块类型“exIf”
我尝试将其放入其他格式,例如 .jpg , .png 和 .gif ,但它们不起作用。你能帮我吗?
这是我的代码:
from tkinter import *
from tkinter import ttk
class Window:
def __init__(self, master):
self.master = master
master.iconbitmap('ta.ico')
master.title('Tamagochi')
master.minsize(width=480, height=240)
master.maxsize(width=480, height=240)
self.pic1 = PhotoImage(file='pic1.png')
self.pic2 = PhotoImage(file='pic2.png')
self.pic3 = PhotoImage(file='pic3.png')
self.pic4 = PhotoImage(file='pic4.png')
self.smFrame = ttk.Frame(master)
self.smButton1 = ttk.Button(self.smFrame, text='Start', command=self.start)
self.smButton2 = ttk.Button(self.smFrame, text='Options', command=self.options)
self.smButton3 = ttk.Button(self.smFrame, text='Quit', command=self.quit)
self.smPhoto1 = ttk.Label(self.smFrame, image=self.pic1)
self.smFrame.pack()
self.smPhoto1.grid()
self.smButton1.grid(pady=40, padx=200)
self.smButton2.grid(pady=0, padx=200)
self.smButton3.grid(pady=40, padx=200)
def start(self):
pass
def options(self):
pass
def quit(self):
exit()
root = Tk()
Window(root)
root.mainloop()
这是完整的错误:
Traceback (most recent call last):
File "C:/Users/NemPl/Desktop/ProLan/Python/Python programi/Tamagochi/Tamagochi.py", line 35, in <module>
Window(root)
File "C:/Users/NemPl/Desktop/ProLan/Python/Python programi/Tamagochi/Tamagochi.py", line 14, in __init__
self.pic3 = PhotoImage(file='pic3.png')
File "C:\Users\NemPl\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 3539, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\NemPl\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 3495, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: encountered an unsupported criticial chunk type "exIf"
答案 0 :(得分:3)
PhotoImage
是一个tkinter
类,遗憾的是,它无法处理 .png 文件。
解决方案是依靠Python Imaging Library 1 ,它提供对多种图像格式的支持,并将它们转换为可以理解 的图像对象>&#34; tkinter
:
from PIL import Image, ImageTk
self.img1 = Image.open("pic1.png")
self.pic1 = ImageTk.PhotoImage(self.img1)
<子> 1。您可以按照here。
所述安装PIL答案 1 :(得分:0)
只是想分享一个为我解决的解决方案!
我发现其他“.png”图像使用相同的代码,所以问题出在图像文件上。
解决我的问题是简单地修改图像(只是从图像编辑器中保存)。