Adding a background image in python

background, canvas, python, python-imaging-library, tkinter

Solution

`PhotoImage` is not an attribute of the `Tk()` instances (`root`). It is a class from `Tkinter`.

So, you must use:

backgroundImage = PhotoImage("D:\Documents\Background.gif")

Beware also `Label` is a class from `Tkinter`...

Edit:

Unfortunately, `Tkinter.PhotoImage` only works with gif files (and PPM). If you need to read png files you can use the `PhotoImage` (yes, same name) class in the `ImageTk` module from `PIL`.

So that, this will put your png image in the canvas:

from Tkinter import *
from PIL import ImageTk

canvas = Canvas(width = 200, height = 200, bg = 'blue')
canvas.pack(expand = YES, fill = BOTH)

image = ImageTk.PhotoImage(file = "C:/Python27/programas/zimages/gato.png")
canvas.create_image(10, 10, image = image, anchor = NW)

mainloop()

Problem

I'm trying to add a background image to a canvas in Python. So far the code looks like this: ``` from Tkinter import * from PIL import ImageTk,Image ... other stuffs root=Tk() canvasWidth=600 canvasHeight=400 self.canvas=Canvas(root,width=canvasWidth,height=canvasHeight) backgroundImage=root.PhotoImage("D:\Documents\Background.png") backgroundLabel=root.Label(parent,image=backgroundImage) backgroundLabel.place(x=0,y=0,relWidth=1,relHeight=1) self.canvas.pack() root.mainloop() ``` It's returning an AttributeError: PhotoImage

Original source