tkinter TclError: error al leer el archivo de bitmap

Estoy tratando de establecer un icono de aplicación (python3 / tkinter) de esta manera:

Interface() root.title("Quicklist Editor") root.iconbitmap('@/home/jacob/.icons/qle_icon.ico') root.resizable(0, 0) root.mainloop() 

no importa lo que haga, sigo recibiendo un mensaje de error (inactivo), que dice:

 return self.tk.call('wm', 'iconbitmap', self._w, bitmap) _tkinter.TclError: error reading bitmap file "/home/jacob/.icons/qle_icon.ico" 

¿Qué estoy haciendo mal?

El problema no es el código, sino el ícono. Intenté crear un xbm con otro progtwig que no sea Gimp (algún editor de icons de KDE), y aunque se ve terriblemente feo, sí muestra un ícono. Supongo que tengo que encontrar un creador que me de un ícono “comprensible” para mi progtwig Python.


Editar

El método iconbitmap resultó ser solo en blanco y negro, por lo que fue inútil, después de todo.

Después de una larga búsqueda, encontré la solución para establecer el color del icono de una aplicación para Python 3 (en Linux). Lo encontré aquí :

 root = Tk() img = PhotoImage(file='your-icon') root.tk.call('wm', 'iconphoto', root._w, img) 

Esta es una pregunta antigua, y hay muchas cosas escritas sobre ella en la web, pero todo es incorrecto o está incompleto, así que, habiéndolo puesto a funcionar, pensé que sería bueno registrar mi código de trabajo actual aquí.

Primero, deberá crear un ícono y guardarlo en dos formatos: Windows “ico” y Unix “xbm”. 64 x 64 es un buen tamaño. XBM es un formato de 1 bit; los píxeles solo están encendidos o apagados, por lo que no hay colores ni grises. Las implementaciones de Linux de tkinter solo aceptan XBM a pesar de que cada escritorio Linux admite íconos reales, por lo que no tiene suerte. Además, la especificación XBM es ambigua acerca de si los bits “en” representan negro o blanco, por lo que puede que tenga que invertir el XBM para algunos escritorios. Gimp es bueno para crear estos.

Luego, para poner el ícono en su barra de título, use este código (Python 3):

 import os from tkinter import * from tkinter.ttk import * root = Tk() root.title("My Application") if "nt" == os.name: root.wm_iconbitmap(bitmap = "myicon.ico") else: root.wm_iconbitmap(bitmap = "@myicon.xbm") 

Intenté esto y no pude hacerlo funcionar con Windows 7.

Encontré una solución

Use la respuesta de Jacob, pero el archivo tiene que ser un .gif si está usando mi sistema operativo, (Windows 7) aparece.

Crea un gif de 64×64 con pintura MS, guárdalo, utiliza la ruta de archivo y el bingo, funciona.

Esto le permitirá usar archivos PNG como íconos, y hace color. Lo probé en Xubuntu 14.04, 32 bits con Python 3.4 ( root es tu objeto Tk ):

 import sys, os program_directory=sys.path[0] root.iconphoto(True, PhotoImage(file=os.path.join(program_directory, "test.png"))) 

(Encontrar el directorio del progtwig es importante si desea buscar test.png en la misma ubicación en todos los contextos. os.path.join es una forma multiplataforma de agregar test.png al directorio del progtwig).

Si cambia de verdadero a falso, no usará el mismo icono para las ventanas que no son las principales.

Por favor, avíseme si esto funciona en Windows y Mac.

Intereting Posts