我正在使用Tkinter编写GUI,并希望在中显示png文件Tkiner.Label。所以我有一些这样的代码:
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'源代码,则回溯将变为:
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