2012-04-15 1874 views
9
#import statements 
from Tkinter import * 
import tkMessageBox 
import tkFont 
from PIL import ImageTk,Image 

Código para importar la imagen:¿Cómo usar una imagen para el fondo en tkinter?

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.

+0

¿Muestra su etiqueta "Wecome !!!!" texto si elimina el atributo de imagen? es decir 'Label (app, textvariable = labelText, ...)' Este texto no aparecería de la imagen que se mostraba, ya que el atributo de imagen tiene prioridad sobre la variable de texto. – gary

+3

Enviaré una propuesta a SO por desaprobación del término "no funciona". Perdió todo significado útil desde el primer día que nació. En serio, intenta describir ** por qué ** crees que no está funcionando. – joaquin

+0

Eliminé mi respuesta ya que no estaba respondiendo su pregunta real. Debe editar su publicación para hacerlo más específico. También usaría el enlace que publicaste en tu comentario para formular una respuesta a esta pregunta. (Está perfectamente bien responder sus propias preguntas aquí.) – gary

Respuesta

17

Un método simple es usar place para usar una imagen como imagen de fondo. Este es el tipo de cosa que place es realmente bueno haciendo.

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) 

A continuación, puede grid o pack otros widgets en la matriz de forma normal. Solo asegúrese de crear primero la etiqueta de fondo para que tenga un orden de apilamiento inferior.

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

background_label.image = background_image 
+0

Gracias por esto, Bryan. Para que funcione en mi programa, tuve que agregar la línea 'background_label.photo = background antes de la última línea. –

+0

¿Cómo agrego una imagen de fondo con una superposición de texto? –

2

Un código tkinter simple para Python 3 para una imagen de fondo de ajuste.

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

funcionó. Por favor, dame el código para hacer dos botones en frente de él. –

Cuestiones relacionadas