【问题标题】:_tkinter.TclError: encountered an unsupported criticial chunk type "exIf"_tkinter.TclError:遇到不支持的关键块类型“exIf”
【发布时间】:2017-03-11 08:55:07
【问题描述】:

所以我想把一些图片放到我的窗口中,每当我运行程序时,它都会给我这个错误:

_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"

【问题讨论】:

  • 你能告诉我们确切的回溯吗?我们需要确定错误是在哪一行引发的。
  • 请发布一个完整的、最小的、可验证的可执行代码示例。您的样本缺少所有导入信息。
  • 我已经更新了

标签: python python-3.x tkinter


【解决方案1】:

PhotoImage 是一个 tkinter 类,不幸的是,它不能处理 .png 文件。

解决方案是依赖Python Imaging Library1,它支持多种图像格式并将它们转换为@987654326 可以“理解”的图像对象@:

from PIL import Image, ImageTk

self.img1 = Image.open("pic1.png")
self.pic1 = ImageTk.PhotoImage(self.img1)

1.您可以按照here 的描述安装 PIL。

【讨论】:

  • 嗯,我正在看一个教程,他们能够使用 .png。我猜他们改变了它。
  • Tcl/Tk 8.6 在 Tk 核心中包含 png 支持。
【解决方案2】:

只是想分享一个为我解决的解决方案!

我发现其他“.png”图像使用相同的代码,所以问题出在图像文件上。

解决我的问题的方法是简单地修改图像(只是从图像编辑器中保存)。

【讨论】:

    猜你喜欢
    • 2018-10-18
    • 2013-07-31
    • 2017-08-22
    • 2018-08-11
    • 2020-09-06
    • 2021-08-16
    • 1970-01-01
    • 2015-12-15
    • 2015-12-18
    相关资源
    最近更新 更多