¿Cómo usar una imagen de fondo en tkinter?

Resuelto user1276381 asked hace 12 años • 3 respuestas
#import statements
from Tkinter import *
import tkMessageBox
import tkFont
from PIL import ImageTk,Image

Código para importar imagen:

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()

Este código no funciona. Quiero importar una imagen de fondo.

user1276381 avatar Apr 15 '12 07:04 user1276381
Aceptado

Un método simple es utilizar placeuna imagen como imagen de fondo. Este es el tipo de cosas que placese hacen realmente bien.

Por ejemplo:

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

Luego puede gridutilizar packotros widgets en el padre como de costumbre. Solo asegúrese de crear primero la etiqueta de fondo para que tenga un orden de apilamiento más bajo.

Nota: si está haciendo esto dentro de una función, asegúrese de mantener una referencia a la imagen; de lo contrario, el recolector de basura destruirá la imagen cuando regrese la función. Una técnica común es agregar una referencia como atributo del objeto etiqueta:

background_label.image = background_image
Bryan Oakley avatar Apr 16 '2012 20:04 Bryan Oakley

Un código tkinter simple para Python 3 para configurar la imagen de fondo.

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
Abhijeet Sinha avatar Dec 27 '2016 06:12 Abhijeet Sinha