17
votes
#import statements
from Tkinter import *
import tkMessageBox
import tkFont
from PIL import ImageTk,Image

Code to import image:

app = Tk()
app.title("Welcome")
image2 =Image.open('C:\\Users\\adminp\\Desktop\\titlepage\\front.gif')
image1 = ImageTk.PhotoImage(image2)
w = image1.width()
h = image1.height()
app.geometry('%dx%d+0+0' % (w,h))
#app.configure(background='C:\\Usfront.png')
#app.configure(background = image1)

labelText = StringVar()
labelText.set("Welcome !!!!")
#labelText.fontsize('10')

label1 = Label(app, image=image1, textvariable=labelText,
               font=("Times New Roman", 24),
               justify=CENTER, height=4, fg="blue")
label1.pack()

app.mainloop()

This code doesn't work. I want to import a background image.

3
Does your label show the "Wecome !!!!" text if you remove the image attribute? i.e. Label(app, textvariable=labelText, ...) This text would not show up of the image was showing up, since the image attribute takes precedence over textvariable. - gary
I will send a proposal to SO for deprecation of the term "not working". It lost any useful meaning the very first day it was born. Seriously, try to describe why you think it is not working. - joaquin
Deleted my answer since it wasn't answering your actual question. You should edit your post to make it more specific. I'd also use the link you posted in your comment to formulate an answer for this question. (It's perfectly fine to answer your own questions here.) - gary

3 Answers

32
votes

One simple method is to use place to use an image as a background image. This is the type of thing that place is really good at doing.

For example:

background_image=tk.PhotoImage(...)
background_label = tk.Label(parent, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)

You can then grid or pack other widgets in the parent as normal. Just make sure you create the background label first so it has a lower stacking order.

Note: if you are doing this inside a function, make sure you keep a reference to the image, otherwise the image will be destroyed by the garbage collector when the function returns. A common technique is to add a reference as an attribute of the label object:

background_label.image = background_image
5
votes

A simple tkinter code for Python 3 for setting background image .

from tkinter import *
from tkinter import messagebox
top = Tk()

C = Canvas(top, bg="blue", height=250, width=300)
filename = PhotoImage(file = "C:\\Users\\location\\imageName.png")
background_label = Label(top, image=filename)
background_label.place(x=0, y=0, relwidth=1, relheight=1)

C.pack()
top.mainloop
0
votes

You can use the root.configure(background='your colour') example:- import tkinter root=tkiner.Tk() root.configure(background='pink')