当前位置: 首页 > 面试题库 >

Tkinter.PhotoImage不支持png图像

百里芷阳
2023-03-14
问题内容

我正在使用Tkinter编写GUI,并希望在中显示png文件Tkiner.Label。所以我有一些这样的代码:

self.vcode.img = PhotoImage(data=open('test.png').read(), format='png')
self.vcode.config(image=self.vcode.img)

这段代码 可以在我的Linux机器上正确运行
。但是,当我在Windows计算机上运行它时,它会失败。我还在其他几台机器(包括Windows和Linux)上进行了测试,但始终失败。

追溯为:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1486, in __call__
    return self.func(*args)
  File "C:\Documents and Settings\St\client\GUI.py", line 150, in showrbox
    SignupBox(self, self.server)
  File "C:\Documents and Settings\St\client\GUI.py", line 197, in __init__
    self.refresh_vcode()
  File "C:\Documents and Settings\St\client\GUI.py", line 203, in refresh_vcode
    self.vcode.img = PhotoImage(data=open('test.png').read(), format='png')
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 3323, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 3279, in __init__
   self.tk.call(('image', 'create', imgtype, name,) + options)
TclError: image format "png" is not supported

如果删除format='png'源代码,则回溯将变为:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1486, in __call__
    return self.func(*args)
  File "C:\Documents and Settings\St\client\GUI.py", line 150, in showrbox
    SignupBox(self, self.server)
  File "C:\Documents and Settings\St\client\GUI.py", line 197, in __init__
    self.refresh_vcode()
  File "C:\Documents and Settings\St\client\GUI.py", line 203, in refresh_vcode
    self.vcode.img = PhotoImage(data=open('test.png').read())
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 3323, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 3279, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
TclError: couldn't recognize image data

那么,我应该怎么做才能使其支持png文件?


问题答案:

tkinter仅支持3种文件格式,即GIF,PGM和PPM。您可能需要将文件转换为.GIF然后加载它们(很容易,但正如jonrsharpe所说,如果不先转换文件就无法工作),也可以将程序移植到Python
2.7并使用Python Imaging Library(PIL)及其tkinter扩展以使用PNG图片。

您可能会发现有用的链接:http :
//effbot.org/tkinterbook/photoimage.htm



 类似资料:
  • 我在读维基百科上的Favicon页面。他们提到了Favicon的HTML5规范: 当前的HTML5规范建议使用标记中的属性rel=“icon”sizes=“图标尺寸的空格分隔列表”指定多个尺寸的尺寸图标。[源]通过在标签中包含type=“file content-type”形式的图标内容类型,可以提供多种图标格式,包括诸如Microsoft.ico和Macintosh.icns文件等容器格式,以及

  • 问题内容: 第一次使用Java处理图片,并且遇到了一些未得到很好记录的怪异异常。这是失败的代码行: 此行将抛出带有 不支持的图像类型 的IIOException 作为异常消息。我检查并重新检查了这行实际上是否引发了异常,File对象有效,URL有效以及实际上是有效的JPG,该JPG在其他图像查看器中完全可以正常加载。 我应该怎么做才能获得有关此异常性质的更多信息?这是在Java 7中加载图像的传统

  • DataSource 接口 不支持 timeout 相关操作 Connection 接口 不支持存储过程,函数,游标的操作 不支持执行 native SQL 不支持 savepoint 相关操作 不支持 Schema/Catalog 的操作 不支持自定义类型映射 Statement 和 PreparedStatement 接口 不支持返回多结果集的语句(即存储过程,非 SELECT 多条数据) 不

  • 我已经将我的图像文件转换为灰度,然后对其进行模糊处理并使用canny,结果是uint8,但我仍然得到了错误。请帮忙!

  • 我需要在JAX-WS中通过客户端连接到外部服务器。客户端在Wildfly 8上运行。使用Java8连接是正常的。但我在Java7中连接到服务器时遇到了问题(我尝试了u45、67、79)。服务器端安全性的属性为https://www.ssllabs.com/ssltest/analyze.html?d=app.bundesnetzagentur.de 在部分“密码套件”中有四个密码。源代码不应支持J

  • 问题内容: 我正在尝试做的是: 我正在尝试使用Java连接到[使用https]的Web Portal。我已经编写了使用Authenticator类提供用户凭据的代码。运行程序时出现异常: “ java.lang.UnsupportedOperationException:尚不支持” 我有张贴的代码: 第二次Try中引发了异常“ java.lang.UnsupportedOperationExcep