Nguyên nhân của vấn đề là, tôi đang làm gì sai trong đoạn mã sau?Làm cách nào để hiển thị hình ảnh trong Python 3 bằng tkinter/ttk?
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()
Thông báo lỗi tôi nhận được từ idle3 là như sau:
>>>
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)
>>>
Thông báo lỗi này đã cho tôi bối rối, tôi chỉ đơn giản là không hiểu những gì nó đang cố gắng để nói. Ý tưởng nào?
tôi cũng sẽ đánh giá cao đề nghị cho thay đổi ...
BTW Tôi đã kiểm tra tham chiếu này http://effbot.org/tkinterbook/photoimage.htm - bạn sẽ thấy đoạn mã của tôi trông rất giống nhau! – Bobble
Lỗi dường như trỏ đến đối số 'myButton' được chuyển đến' PhotoImage() '. Tôi không tin rằng 'PhotoImage()' có một tham chiếu đến một đối tượng widget, vì vậy điều này có thể gây ra lỗi. Hãy thử dòng đó mà không có nó, chẳng hạn như 'myImage = PhotoImage (file = 'myPicture.gif')' – gary
@Gary, điều đó dường như làm điều đó. Tôi đã bị lừa bởi một số tài liệu (và một số lỗi khác mà tôi đã tạo) để suy nghĩ 'PhotoImage' cần một tham chiếu rõ ràng đến cửa sổ gốc.Sau khi một số fiddling hơn tôi thấy tham chiếu đến một trong hai gốc hoặc nút chính nó có thể được cung cấp bởi một tùy chọn cấu hình trên constructor 'PhotoImage' như thế này,' PhotoImage (master = myButton, file = 'myFile.gif') ', nhưng theo cách tôi đã viết, có vẻ như Tkinter giống như một cái tên, được cho là một chuỗi, ofc. – Bobble