Суть в том, что я делаю неправильно в следующем фрагменте кода?
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()
берет ссылку на объект виджета, поэтому это может быть причиной ошибки. Попробуйте эту строку без него, напримерmyImage = PhotoImage(file='myPicture.gif')
- person gary   schedule 22.07.2012PhotoImage
нуждается в явной ссылке на корневое окно. После еще некоторого возни я обнаружил, что ссылка либо на корень, либо на саму кнопку может быть предоставлена другим параметром конфигурации в конструктореPhotoImage
, подобным этому,PhotoImage(master=myButton, file='myFile.gif')
, но так, как я это написал, это выглядит для Tkinter как имя, которое должно быть строкой, ofc. - person Bobble   schedule 23.07.2012