Imágenes personalizadas de Tkinter
Estoy intentando crear un botón de retroceso. Tengo una imagen llamada back-button.png
en la carpeta img
.
Este es mi código:
from tkinter import *
import customtkinter as ctk
root = Tk()
ctk.CTkLabel(root,
text='This is a label',
text_font=('Verdana', 17)).pack(side=LEFT, pady=11)
img = PhotoImage(file="./img/back-button.png")
ctk.CTkButton(root, image=img).pack(side=LEFT)
root.mainloop()
Cuando ejecuto este código, obtengo este error:
Traceback (most recent call last):
File "c:\Users\User\Desktop\youtube-audio-downloader\tempCodeRunnerFile.py", line 11, in <module>
ctk.CTkButton(root, image=img).pack(side=LEFT)
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\customtkinter\customtkinter_button.py", line 102, in __init__
self.draw()
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\customtkinter\customtkinter_button.py", line 147, in draw
self.canvas.configure(bg=CTkColorManager.single_color(self.bgcolor, self.appearance_mode))
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1646, in configure
return self._configure('configure', cnf, kw)
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1636, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown color name "."
Entonces, ¿por qué está sucediendo esto? ¿Y cómo puedo mostrar una imagen en un botón?
davy.ai
El error está ocurriendo porque la biblioteca CustomTkinter está intentando establecer el color de fondo del botón como “.” que no es un nombre de color válido. Para mostrar una imagen en un botón utilizando CustomTkinter, debe establecer la opción
image
en lugar de la opciónbg_color
. Aquí está el código modificado:Esto debería mostrar la imagen en el botón sin errores. Ten en cuenta que debes mantener una referencia al objeto
PhotoImage
para evitar que sea eliminado por el recolector de basura.