Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Pasar de from import tkinter import * a import tkinter as tk
#1
Buenas:

Estoy cambiando mi manera de programar con tkinter mi app tal y como dice el título y estoy teniendo problemas en concreto con la clase PhotoImage que uso para crear iconos que añado a los botones. Todo funciona perfectamente excepto que no me muestra los iconos en los botones y dependiendo de la función command que le asignes al botón da errores o no.

Os muestro el ejemplo que funciona con from tkinter import *:

  1. Photosalir = PhotoImage(file="/home/juan/Templates/Python/Appemergency/icons/exitapp.gif") # Este es el icono y en principio funciona
  2.  
  3. self.windexit = ttk.Button(self.frame12ccl, cursor='hand2', style="STADD.TButton", image=Photosalir, command=exitroot) # Este es el botón dónde lo coloco.
  4. self.windexit.grid(row=0, column=2, ipady=35)
  5.  
  6. # Y este es el lo único que se me ha ocurrido cambiar en el import tkinter as tk:
  7.  
  8. Photosalir = tk.PhotoImage(file="/home/juan/Templates/Python/Appemergency/icons/exitapp.gif")
  9.  
  10. self.windexit = ttk.Button(self.frame12ccl, cursor='hand2', style="STADD.TButton", image=Photosalir, command=exitroot) # Este es el botón dónde lo coloco.
  11. self.windexit.grid(row=0, column=2, ipady=35) # Este no muestra el icono.

¿Qué estoy haciendo mal?.

Os pongo el error que me da cuando intento deshabilitar el botón que presiono por ejemplo. (he comprobado que la ruta al archivo y el nombre del mismo es correcto.

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
  File "/home/juan/Templates/Python/Appemergency/Ccd.py", line 138, in cronatatorccd
    self.butcronaccd.configure(state=tk.DISABLED)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 1485, in configure
    return self._configure('configure', cnf, kw)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 1476, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: image "pyimage3" doesn't exist


Muchas Gracias.
Responder
#2
Nada he desistido. Me quedo con from tkinter import * ya que tampoco me ofrece el otro sistema grandes ventajas.

Además ya he averiguado que el problema no está dónde pensaba sino en el método update(). No entiendo muy bien porqué no funciona PhotoImage con dicho método.

Lo que me lleva al otro post.

Muchas Gracias.
Responder
#3
Hola.

Nunca había leído ese error, pero aquí tienes algunas potenciales soluciones: https://stackoverflow.com/questions/2025...esnt-exist. No obstante, no debería cambiar en absoluto el comportamiento del programa según uses import tkinter as tk o from tkinter import *. A mí particularmente me agrada más la primera, pero es cuestión (principalmente) de gustos.

Saludos
Responder
#4
(06-04-2020, 04:48 PM)Francisco escribió: Hola.

Nunca había leído ese error, pero aquí tienes algunas potenciales soluciones: https://stackoverflow.com/questions/2025...esnt-exist. No obstante, no debería cambiar en absoluto el comportamiento del programa según uses import tkinter as tk o from tkinter import *. A mí particularmente me agrada más la primera, pero es cuestión (principalmente) de gustos.

Saludos

Muchas Gracias Francisco. El problema era otro. Ya está solucionado. (Al hacerse más grande la aplicación me he dado cuenta que cualquier tontería puede hacer que falle toda la aplicación).
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)