问题的关键是,在以下代码片段中我在做什么错?

    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)
    >>>

此错误消息使我感到困惑,我根本不明白它要说的是什么。有任何想法吗?

我也希望能有一些改变的建议...

最佳答案

该错误似乎指向传递给myButtonPhotoImage参数。正如您在评论中指出的那样,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/

10-10 01:03