Таким образом, я выполняю python 2.6 на MacBook Pro и пытаюсь написать код в Python для отображения изображения из файла в маркировке на tkinter gui. Изображение называют image.png. Прогоны программы без ошибок, когда я использую этот код
i = Image.open("image.png")
но когда я делаю этот код (я добавляю одну строку):
i = Image.open("image.png")
photo = ImageTk.PhotoImage(i)
Программа разрушит и скажет "Ошибку шины" в командной строке. Я даже не знаю то, что это означает. Я думал бы, что PIL установлен правильно, начиная с работ Изображения, но то, что ImageTk не работает, озадачивает меня. Кто-либо может сказать мне, что могло бы вызывать эту Ошибку шины?
Править: Хорошо я сделал новую программу для тестирования ошибки далее. Вот точный скрипт, который я запустил:
import Image
import ImageTk
i = Image.open("image.png")
photo = ImageTk.PhotoImage(i)
Теперь вместо того, чтобы получить "Ошибку шины", это - мой traceback.
Traceback (most recent call last):
File "imageTest.py", line 5, in <module>
photo = ImageTk.PhotoImage(i)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/ImageTk.py", line 113, in __init__
self.__photo = apply(Tkinter.PhotoImage, (), kw)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 3285, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 3226, in __init__
raise RuntimeError, 'Too early to create image'
RuntimeError: Too early to create image
Exception AttributeError: "PhotoImage instance has no attribute '_PhotoImage__photo'" in <bound method PhotoImage.__del__ of <ImageTk.PhotoImage instance at 0x3c7a30>> ignored
Я не знаю об ошибке шины, но вам нужно создать окно Tk, прежде чем вы сможете вызвать PhotoImage. Этот сценарий работает для меня-
import Image
import ImageTk
from Tkinter import Tk
window = Tk()
i = Image.open("image.png")
photo = ImageTk.PhotoImage(i)