Question

I'm executing the following code

import tkinter
import tkinter.messagebox
import random
from PIL import Image

item = tkinter.Button(root,
                text=color,
                width=20,
                height=10,
                relief='raised',
                borderwidth=5,
                bg=color
            )

original = Image.open('images/img1.gif')
ph_im = Image.PhotoImage(original)
item.config(image=ph_im)
item.pack(side='left')

I am using Pillow for Python33. I'm trying to insert an image into a button, but returns this error message:

Traceback (most recent call last):   File "C:\Python33\projects\svetofor\index2.py", line 94, in <module>
    Application(root)   File "C:\Python33\projects\svetofor\index2.py", line 20, in __init__
    self.make_widgets()   File "C:\Python33\projects\svetofor\index2.py", line 50, in make_widgets
    ph_im = Image.PhotoImage(original) AttributeError: 'module' object has no attribute 'PhotoImage'
Was it helpful?

Solution

PhotoImage is in PIL.ImageTk module.

import tkinter
import tkinter.messagebox
import random
from PIL import Image, ImageTk # <---

root = tkinter.Tk()
color = 'white'

item = tkinter.Button(root,
                text=color,
                width=20,
                height=10,
                relief='raised',
                borderwidth=5,
                bg=color
            )

original = Image.open('images/img1.gif')
ph_im = ImageTk.PhotoImage(original) # <----------
item.config(image=ph_im)
item.pack(side='left')
root.mainloop()

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top