问题的关键是,在以下代码片段中我在做什么错?
from tkinter import *
from tkinter.ttk import *
root = Tk()
myButton = Button(root)
myImage = PhotoImage(myButton, file='myPicture.gif')
myButton.image = myImage
myButton.configure(image=myImage)
root.mainloop()
我从idle3收到的错误消息如下:
>>>
Traceback (most recent call last):
File "/home/bob/Documents/Python/tkImageTest.py", line 9, in <module>
myButton.configure(image=myImage)
File "/usr/lib/python3.2/tkinter/__init__.py", line 1196, in configure
return self._configure('configure', cnf, kw)
File "/usr/lib/python3.2/tkinter/__init__.py", line 1187, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
TypeError: __str__ returned non-string (type Button)
>>>
此错误消息使我感到困惑,我根本不明白它要说的是什么。有任何想法吗?
我也希望能有一些改变的建议...
最佳答案
该错误似乎指向传递给myButton
的PhotoImage
参数。正如您在评论中指出的那样,PhotoImage
将小部件对象视为字符串(有多个类型为string的选项;请参见PhotoImage选项here的列表)。
如果在不引用myButton
对象的情况下实现该行,则代码将起作用:
myImage = PhotoImage(file='myPicture.gif')
我不确定您是否需要更改
PhotoImage
构造函数。查看PhotoImage
文档,以确定该类的有效选项(即资源名称)。引用帮助文件:仅供引用:从Python在命令行或从IDLE获取文档的最简单方法是:
from tkinter import PhotoImage
help(PhotoImage)
最后,有关此类的另一个有用链接是http://tkinter.unpythonic.net/wiki/PhotoImage。
关于image - 如何使用tkinter/ttk在Python 3中显示图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11598360/