Python - No carga la imagen en Gtk

 
Vista:
sin imagen de perfil

No carga la imagen en Gtk

Publicado por 12-trunks-12 (37 intervenciones) el 20/03/2015 14:22:34
Buenas, estoy haciendo el juego del ahorcado y cuando quiero cargar la imagen no lo hace, como si hubiera puesto mal la ruta. Ya probé poniendo a secas el nombre ('fallo0.png') y con la ruta completa ('C:\Documents and Settings ...\fallo0.png') pero nada. Añado que en Linux funciona correctamente pero en Windows XP que es el que estoy usando me da error, dejo una captura:

4a07a1475b25b953cb905ba33df0093c
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

No carga la imagen en Gtk

Publicado por 12-trunks-12 (37 intervenciones) el 20/03/2015 16:15:47
Se me olvidó decir algo pero que ya lo pone en el título, estoy usando Gtk y con python3.4 por lo que el código de la imagen sería este:

1
2
imagen = Gtk.Image()
imagen.set_from_file('nombre o ruta del archivo')  # Probé con 'fallo0.png' y con 'C:\...\fallo0.png'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

No carga la imagen en Gtk

Publicado por xve (1646 intervenciones) el 20/03/2015 18:41:18
Hola, nos puedes adjuntar el código para probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

No carga la imagen en Gtk

Publicado por 12-trunks-12 (37 intervenciones) el 21/03/2015 00:13:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
#!/usr/bin/env python3
#-------------------------------
from gi.repository import Gtk
import random
#-------------------------------
def empezar(widget):
    pass
 
 
def minimizar(widget):
    window.unmaximize()
 
def maximizar(widget):
    window.maximize()
 
 
def quitar_guiones_dieresis(palabra):
   palabra_cambiada = ''
   for letra in palabra:
       if letra in ['á', 'à', 'ä', 'â']:
           palabra_cambiada += 'a'
       elif letra in ['é', 'è', 'ë', 'ê']:
           palabra_cambiada += 'e'
       elif letra in ['í', 'ì', 'ï', 'î']:
           palabra_cambiada += 'i'
       elif letra in ['ó', 'ò', 'ö', 'ô']:
           palabra_cambiada += 'o'
       elif letra in ['ú', 'ù', 'ü', 'û']:
           palabra_cambiada += 'u'
       else:
           palabra_cambiada += letra
   return palabra_cambiada
 
 
def cambiar_persona_ahorcada(widget, opcion):
    global tipo_imagen
    tipo_imagen = opcion
 
 
def cambiar_imagen(fallos, tipo_imagen):  # Terminado
   if tipo_imagen == 'blanco':
       imagenes = ["fallo1.png", "fallo2.png", "fallo3.png", "fallo4.png", "fallo5.png", "fallo6.png", "fallo7.png"]
   elif tipo_imagen == 'negro':
       imagenes = ["fallo1.png", "fallo2.png", "fallo3.png", "fallo4.png", "fallo5.png", "fallo6.png", "fallo7.png"]
   elif tipo_imagen == 'chino':
       imagenes = ["fallo1.png", "fallo2.png", "fallo3.png", "fallo4.png", "fallo5.png", "fallo6.png", "fallo7.png"]
   imagen.set_from_file(imagenes[fallos-1])
 
def terminar_partida(restante_escondida):  # Terminado
    global fallos
    if fallos == 7:
       introducir_letra.set_editable(False)
       label_error.set_text("El juego ha terminado, has perdido. La palabra era: " + palabra_escondida.upper())
    elif restante_escondida == palabra_escondida:
       introducir_letra.set_editable(False)
       label_error.set_text("ENHORABUENA, HAS GANADO")
 
 
def cambiar_letras_falladas(letra):  # Terminado
   letras_falladas.append(letra)
   if label_letras_falladas.get_text() == '-':
      label_letras_falladas.set_text(letra)
   else:
      label_letras_falladas.set_text(label_letras_falladas.get_text() + ',' + letra)
 
 
def comprobar_palabra(widget):
   global fallos
   if guiones_solucion.get_text().lower() == palabra_escondida or fallos == 7:
       return
#--------
   lista_letras = list("bcdfghjklmnñpqrstuvwxyzaeiouáéíóúàèìòùäëïöüâêîôû")
   letra = introducir_letra.get_text().lower()
 
   if letra not in lista_letras:
       label_error.set_text("Error: Introduce solo una letra")
       introducir_letra.grab_focus()
       return
   elif letra in letras_falladas:
       label_error.set_text("Error: Ya has fallado esa letra")
       introducir_letra.grab_focus()
       return
   elif letra in letras_acertadas:
       label_error.set_text("Error: Ya has acertado esa letra")
       introducir_letra.grab_focus()
       return
   else:
       label_error.set_text("")
#--------
   acertar = False
   guiones_actuales = guiones_solucion.get_text().lower()
   restante_escondida = ''
 
   for letra_escondida in palabra_escondida:
       if letra_escondida not in guiones_actuales:  # Si la letra no está puesta ya en la palabra:
           if letra == letra_escondida or letra == quitar_guiones_dieresis(letra_escondida):  # Si la letra es igual...
               acertar = True
               letras_acertadas.append(letra)
               letras_acertadas.append(letra_escondida)  # Añadimos las 2(para las vocales con guiones)
               restante_escondida += letra_escondida
           else:
               restante_escondida += '_ '
       else:  # Si la letra ya está dicha la ponemos
           restante_escondida += letra_escondida
 
   guiones_solucion.set_text(restante_escondida.upper())
   terminar_partida(restante_escondida)
 
   if acertar == False:
       fallos += 1
       cambiar_letras_falladas(letra)
       cambiar_imagen(fallos)
       terminar_partida(restante_escondida)
 
   introducir_letra.set_text('')
   introducir_letra.grab_focus()
#===========================
#===========================
diccionario = ['casá', 'cigüeña', 'esternocleidomastoideo', 'murciélago']
letras_falladas = []
letras_acertadas = []
fallos = 0
tipo_imagen = '1'
#===========================
window = Gtk.Window()
window.set_title("Ahorcado")
window.connect("delete-event", Gtk.main_quit)
#=========
contenedor_grid = Gtk.Grid()
contenedor_grid.set_row_spacing(5)
contenedor_grid.set_column_spacing(5)
#=========
menu_general = Gtk.MenuBar()
#---Categorías del menú
menu_item_archivo = Gtk.MenuItem(label='Archivo')
menu_general.append(menu_item_archivo)
 
menu_item_edicion = Gtk.MenuItem(label='Edición')
menu_general.append(menu_item_edicion)
 
menu_item_ver = Gtk.MenuItem(label='Ver')
menu_general.append(menu_item_ver)
 
menu_item_configuracion = Gtk.MenuItem(label='Configuración')
menu_general.append(menu_item_configuracion)
 
menu_item_salir = Gtk.MenuItem(label='Salir')
menu_general.append(menu_item_salir)
 
#---Subcategorías del menú
submenu_archivo = Gtk.Menu()
menu_item_archivo.set_submenu(submenu_archivo)
 
submenu_edicion = Gtk.Menu()
menu_item_edicion.set_submenu(submenu_edicion)
 
submenu_ver = Gtk.Menu()
menu_item_ver.set_submenu(submenu_ver)
 
submenu_configuracion = Gtk.Menu()
menu_item_configuracion.set_submenu(submenu_configuracion)
 
submenu_salir = Gtk.Menu()
menu_item_salir.set_submenu(submenu_salir)
 
#---Elementos subcategorías()
item_repetir = Gtk.MenuItem(label='Empezar de nuevo')
item_repetir.connect('activate', empezar)
submenu_archivo.append(item_repetir)
 
item_cambiar_imagen = Gtk.MenuItem(label='Cambiar imagen')
submenu_edicion.append(item_cambiar_imagen)
 
item_minimizar = Gtk.MenuItem(label='Minimizar')
item_minimizar.connect('activate', minimizar)
submenu_ver.append(item_minimizar)
 
item_maximizar = Gtk.MenuItem(label='Maximizar')
item_maximizar.connect('activate', maximizar)
submenu_ver.append(item_maximizar)
 
item_cerrar = Gtk.MenuItem(label='Cerrar aplicación')
item_cerrar.connect('activate', Gtk.main_quit)
submenu_salir.append(item_cerrar)
 
#---Elementos subcategorías(, no se ve a simple vista)
menu_cambiar_imagenes = Gtk.Menu()
item_cambiar_imagen.set_submenu(menu_cambiar_imagenes)
 
#---Elementos subcategorías(, opciones)
cambiar_imagen_1 = Gtk.MenuItem(label='Imagen')
cambiar_imagen_1.connect('select', cambiar_persona_ahorcada, '1')
menu_cambiar_imagenes.append(cambiar_imagen_1)
 
cambiar_imagen_2 = Gtk.MenuItem(label='Blanco')
cambiar_imagen_2.connect('select', cambiar_persona_ahorcada, '2')
menu_cambiar_imagenes.append(cambiar_imagen_2)
 
cambiar_imagen_3 = Gtk.MenuItem(label='Chino')
cambiar_imagen_3.connect('select', cambiar_persona_ahorcada, '3')
menu_cambiar_imagenes.append(cambiar_imagen_3)
#---
contenedor_grid.attach(menu_general, 0, 0, 2, 1)
#=====
imagen = Gtk.Image()
imagen.set_from_file("fallo0.png")
contenedor_grid.attach(imagen, 0, 2, 1, 1)
#=====
frame = Gtk.Frame()
contenedor_frame = Gtk.Grid()
 
palabra_escondida = random.choice(diccionario)
contenedor_frame.attach(Gtk.Label("Solución:"), 0, 0, 1, 1)
 
guiones_solucion = Gtk.Label(len(palabra_escondida) * '_ ')
contenedor_frame.attach(guiones_solucion, 1, 0, 1, 1)
#=====
contenedor_frame.attach(Gtk.Label('Letras falladas:'), 0, 1, 1, 1)
label_letras_falladas = Gtk.Label("-")
contenedor_frame.attach(label_letras_falladas, 1, 1, 1, 1)
#=====
contenedor_frame.attach(Gtk.Label('Introduce una letra: '), 0, 2, 1, 1)
introducir_letra = Gtk.Entry()
contenedor_frame.attach(introducir_letra, 1, 2, 1, 1)
#=====
boton_enviar_letra = Gtk.Button(label='Enviar')
boton_enviar_letra.connect('clicked', comprobar_palabra)
contenedor_frame.attach_next_to(boton_enviar_letra, introducir_letra, Gtk.PositionType.RIGHT, 1, 1)
 
label_error = Gtk.Label('-')
contenedor_frame.attach_next_to(label_error, introducir_letra, Gtk.PositionType.BOTTOM, 1, 1)
#=====
frame.add(contenedor_frame)
contenedor_grid.attach_next_to(frame, imagen, Gtk.PositionType.RIGHT, 1, 1)
window.add(contenedor_grid)
#=========
window.show_all()
Gtk.main()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

No carga la imagen en Gtk

Publicado por 12-trunks-12 (37 intervenciones) el 21/03/2015 18:33:03
Buenas, he visto que poniendo las imagenes png a la mista altura (en cuanto a la ruta) que el archivo .py la carga bien, pero yo tengo 3 carpetas con ligeras variaciones y quiero poder tener carpetas con las imagenes para tenerlo organizado y no tener todas las imagenes a la misma altura que el archivo .py
La ruta completa sigue sin funcionar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

No carga la imagen en Gtk

Publicado por 12-trunks-12 (37 intervenciones) el 23/03/2015 21:25:55
Bueno ya he conseguido ponerlas con la ruta entera, para ello hay que poner (por lo menos en mi caso) una r antes de la ruta para que tome las barras invertidas como rutas y no como se utilizarían por ejemplo en \n. Dejo ejemplo:
1
ruta = r"C:\...\imagen.png"

Ahora voy a buscar si hay alguna manera de acortar la ruta para que no ocupe tanto xD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar