Albert.Novikov
Окт. 4, 2008 12:34:58
Здравствуйте.
Мне нужно сделать так, чтобы, на кнопке была картинка(PNG). Так почему-то не получилось:
from PIL import Image
buttonsg_img = Image.open(“button_single_game.png”)
buttonsg = Button(app, image=buttonsg_img, command=calledsg)
buttonsg.grid()
Вот какая ошибка вышла из консоли:
Traceback (most recent call last):
File “./main.py”, line 35, in <module>
buttonsg = Button(app, image=buttonsg_img, command=calledsg)
File “/usr/lib/python2.5/lib-tk/Tkinter.py”, line 2000, in __init__
Widget.__init__(self, master, ‘button’, cnf, kw)
File “/usr/lib/python2.5/lib-tk/Tkinter.py”, line 1930, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image “<PIL.PngImagePlugin.PngImageFile instance at 0xb6c24cac>” doesn't exist
P.S я в python новичок, так что пожалуйста не ругайте если вопрос очень легкий :(
igor.kaist
Окт. 4, 2008 12:48:46
import ImageTk
img=ImageTk.photo_image(file)
эта на вскидку.. Все что мог вспомнить едя в автобусе :) а вообще этот вопрос должен быть задан в разделе GUI
Albert.Novikov
Окт. 4, 2008 13:02:48
buttonsg_img = ImageTk.PhotoImage(“button_single_game.png”)
buttonsg = Button(app, image=buttonsg_img, command=calledsg)
buttonsg.grid()
Вот так, как Вы сказали не работает, говорит консоль:
Traceback (most recent call last):
File “./main.py”, line 35, in <module>
buttonsg_img = ImageTk.PhotoImage(“button_single_game.png”)
File “/usr/lib/python2.5/site-packages/PIL/ImageTk.py”, line 109, in __init__
mode = Image.getmodebase(mode)
File “/usr/lib/python2.5/site-packages/PIL/Image.py”, line 235, in getmodebase
return ImageMode.getmode(mode).basemode
File “/usr/lib/python2.5/site-packages/PIL/ImageMode.py”, line 46, in getmode
return _modes
KeyError: ‘button_single_game.png’
Exception exceptions.AttributeError: “PhotoImage instance has no attribute ‘_PhotoImage__photo’” in <bound method PhotoImage.__del__ of <ImageTk.PhotoImage instance at 0xb6c80cec>> ignored
Albert.Novikov
Окт. 4, 2008 13:52:02
Всем спасибо! Разобрался уже сам! надо было так:
from PIL import Image
import ImageTk
buttonsg_img = Image.open(“abc.gif”)
buttonsg_img = ImageTk.PhotoImage(buttonsg_img)
buttonsg = Button(app, image=buttonsg_img, command=calledsg)
buttonsg.grid()
Хехе ^_^
igor.kaist
Окт. 5, 2008 15:36:47
Я же говорил что навскидку.. :-)