image_printModo impresión y lectura

Guía completa paso a paso


🧩 1. Entender el problema: por qué Tkinter no cambia el icono de la barra de tareas

Tkinter permite cambiar:

Pero NO controla el icono de la barra de tareas.

En Windows, ese icono depende del ejecutable que está corriendo:

Qué ejecutasIcono que aparece
python.exeIcono de Python
pythonw.exeIcono de Python
Doble clic a un .pyIcono asociado a Python
Un .exe creado por tiTu icono personalizado

Por eso, aunque cambies el icono dentro de Tkinter, la barra de tareas sigue mostrando el de Python.


🚀 2. Solución real: convertir tu script en un .exe con PyInstaller

Esta es la forma profesional y definitiva.


🛠 2.1 Instalar PyInstaller

En la terminal:

pip install pyinstaller

📦 2.2 Crear el ejecutable con tu icono

Coloca tu archivo icono.ico en la misma carpeta que tu script.

Luego ejecuta:

pyinstaller --noconsole --icon=icono.ico tu_script.py

Explicación:

  • --noconsole → evita que se abra la consola negra
  • --icon=icono.ico → icono del ejecutable
  • tu_script.py → tu programa

📁 2.3 Dónde aparece tu .exe

PyInstaller crea dos carpetas:

dist/
build/

Tu ejecutable está en:

dist/tu_script/tu_script.exe

Ese .exe ya mostrará tu icono en la barra de tareas.


🎯 3. Código Tkinter correcto para iconos

Este es el código limpio y funcional:

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()

# Icono .ico (para Windows)
root.iconbitmap("icono.ico")

# Icono PNG (para Tkinter)
img = Image.open("icono.png")
icon = ImageTk.PhotoImage(img)
root.iconphoto(True, icon)

root.mainloop()

🧠 4. Consejos importantes para evitar errores

mainloop() solo se llama una vez

Nunca lo pongas dos veces.

✔ Carga las imágenes después de crear root

Tkinter necesita un contexto activo.

✔ Usa .ico para el ejecutable

Windows no acepta PNG como icono del programa.


🎁 5. Bonus: estructura recomendada para proyectos Tkinter

mi_app/
│
├── icono.ico
├── icono.png
├── main.py
└── recursos/
    └── imágenes, sonidos, etc.

Y el comando:

pyinstaller --noconsole --icon=icono.ico main.py

image_printModo impresión y lectura
Translate » Traductor