Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Imagen Tkinter

Estas en el tema de Imagen Tkinter en el foro de Python en Foros del Web. Hola, buenas tardes. Estoy creando un juego del gato con tkinter y quisiera ponerle una imagen en el menu principal. Quedarían arriba tres botones y ...
  #1 (permalink)  
Antiguo 03/05/2015, 14:58
 
Fecha de Ingreso: mayo-2015
Mensajes: 3
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta Imagen Tkinter

Hola, buenas tardes. Estoy creando un juego del gato con tkinter y quisiera ponerle una imagen en el menu principal. Quedarían arriba tres botones y abajo la imagen.
Este es el código que use para la inmagen:
img = PhotoImage(file="C:\Users\Personal\Desktop\Blackca t.gif")
widget = Label(root, image=img).pack()
img(row=1,colum=2)

primeramente no me aparece la imagen, despues de jugar una vez y volver al menu principal me apare pero con este error:
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
return self.func(*args)
File "C:\Users\Personal\Desktop\Gato\OFicial\Gatointerf az.py", line 96, in menuPrincipal
img(row=1,colum=2)
AttributeError: PhotoImage instance has no __call__ method

y después de eso me meto al juego y se baja la imagen, regreso y se baja mas y me impide jugar. Si alguien pudiera ayudarme, les agradecería mucho, tengo a penas un par de meses aprendiendo a programar y es lo primero que hago con Tkinter, gracias.
  #2 (permalink)  
Antiguo 03/05/2015, 16:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Imagen Tkinter

Es porque img no es una objeto que puedas llamar como una función.

Creo que quieres hacer esto
Código Python:
Ver original
  1. widget = Label(root, image=img)
  2. widget.grid(row=1,colum=2)
  3. widget.pack()
  #3 (permalink)  
Antiguo 09/05/2015, 16:08
 
Fecha de Ingreso: mayo-2015
Mensajes: 3
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Imagen Tkinter

Hola estoy intenando crear un topten en python:
f= open("C:\Users\Personal\Desktop\Top.txt","r")
print f.read()
f.close()
lineas=[]
f= open("C:\Users\Personal\Desktop\Top.txt","r")
x=f.readline()
contador = 0
contadorGanador = 0
encontroGanador = 0
while (x!=""):
lineas.append(x)
#SEparamos lineas
lineaSeparada=x.split(" ")
#Obtenemos nombre
nombre=lineaSeparada[0]
#Obtenemos puntos
puntos1 = int(lineaSeparada[1])
#Si el nombre es igual al ganador sumamos
print "NOMBRE SEL: "+nombre
print "NOMBRE ganador: "+nombreganador
if nombreganador == nombre:
contadorGanador = contador
puntos2 = puntos1+1
lineas[contador]=nombre+" "+str(puntos2)+"\n"
print "Tenia %i puntos y ahora tiene %i puntos"%(puntos1,puntos2)
encontroGanador = 1
x=f.readline()
contador= contador+1
print lineas

if(encontroGanador == 0):
lineas.append("\n"+nombreganador+" "+str(1))

print "GANADOR: "+nombreganador+" PUNTOS NUEVOS= "+lineas[contadorGanador]
f= open("C:\Users\Personal\Desktop\Top.txt","w")
for linea in lineas:
f.write(linea)
f.close()


eso es lo que tengo, en un principio si me salia pero le movi para intentar ordenar del jugador que tiene mas puntos al que tiene menos y ahora nada. Encontre que con algo como esto se ordena:
s=f.read()
s=[["Susana", 10],["Wendy",8],["Karla", 15],["Fernanda",5],["Roberto",12]
print s
for i in range (0,len(s)-1):
for j in range(i+1,len(s)):
if (s[i][1]<s[j][1]):
n=s[i][0]
v=s[i][1]
s[i][0]=s[j][0]
s[i][1]=s[j][1]
s[j][0]=n
s[j][1]=v
print s
n="Pedro"
encontrado=0
for i in range(0,len(s)):
if (s[i][0]==n):
s[i][1]=s[i][1]+1
encontrado=1
break
if (encontrado==0):
d=[n,1]
s.append(d)
else:
for i in range (0,len(s)-1):
for j in range(i+1,len(s)):
if (s[i][1]<s[j][1]):
n=s[i][0]
v=s[i][1]
s[i][0]=s[j][0]
s[i][1]=s[j][1]
s[j][0]=n
s[j][1]=v
print s
n="Pedro"
encontrado=0
for i in range(0,len(s)):
if (s[i][0]==n):
s[i][1]=s[i][1]+1
encontrado=1
break
if (encontrado==0):
d=[n,1]
s.append(d)
else:
for i in range (0,len(s)-1):
for j in range(i+1,len(s)):
if (s[i][1]<s[j][1]):
n=s[i][0]
v=s[i][1]
s[i][0]=s[j][0]
s[i][1]=s[j][1]
s[j][0]=n
s[j][1]=v
print len(s)
if(len(s)>10):
x=10
else:
x=len(s)
i=0
while(i<x):
print s[i]
i=i+1

Pero no sé como juntarlo a mi programa ni cómo queden solo los primeros 15, agradecería muchisimo su ayuda, que es mi primer juego con Python.

Etiquetas: gui, ip, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:01.