Python 3 tkinter iconbitmap error en ubuntu

Bueno tengo esto:

import tkinter gui = tkinter.Tk() gui.iconbitmap(default='/home/me/PycharmProjects/program/icon.ico') gui.mainloop()` 

Pero cuando corro me sale un error diciendo

 Traceback (most recent call last): File "/home/spencer/PycharmProjects/xMinecraft/GUI.py", line 17, in  gui.iconbitmap(default='/home/me/PycharmProjects/program/icon.ico') File "/usr/lib/python3.3/tkinter/__init__.py", line 1638, in wm_iconbitmap return self.tk.call('wm', 'iconbitmap', self._w, '-default', default) _tkinter.TclError: wrong # args: should be "wm iconbitmap window ?bitmap?"` 

Estoy tratando de usar tkinter para establecer una ventana que he hecho ícono. Estoy usando Pycharm instalado en Ubuntu 13.10. He intentado varias cosas desde cambiar ‘/’ a ‘\’ y agregar una Z: // al frente porque ese es el nombre de mi partición. Pero todavía me sale el error, así que por favor ayuda.

Debe especificar la ruta como el primer argumento posicional o usar el argumento de la palabra clave “bitmap”. Está bastante mal documentado, pero se requiere el argumento de bitmap; no se puede simplemente dar el argumento de la palabra clave default . De hecho, el argumento de la palabra clave de bitmap se ha eliminado en Python 3.

Sin embargo, solo puede usar archivos .ico en Windows. En ubuntu y otras cajas de linux necesitas usar un archivo .xbm, y prefijarlo con “@”

Esto debería funcionar solo en Windows:

 gui.iconbitmap('/home/me/PycharmProjects/program/icon.ico') 

En ubuntu, tendría que ser algo como esto:

 gui.iconbitmap('@/home/me/PyCharmProjets/program/icon.xbm') 

No puede simplemente cambiar el nombre de un archivo .ico a .xbm, son formatos de archivo completamente diferentes.

Un poco interesante de investigación

png, svg, ico no funcionó

Encontré un xbm en mi máquina (xubuntu – Linux dist), gracias a sqlitemanager

tool.xbm

note el @ – el código es una modificación de Lutz “Programming Python” Capítulo 1, tkinter103.py

 from tkinter import * from tkinter.messagebox import showinfo def reply(name): showinfo(title='Reply', message='Hello %s!' % name) top = Tk() #img = PhotoImage(file='py-blue-trans-out.ico') #no top.title('Echo') top.iconbitmap('@tool.xbm') #yes #top.iconphoto(True, PhotoImage(file='tool.xbm')) #no Label(top, text="Enter your name:").pack(side=TOP) ent = Entry(top) ent.pack(side=TOP) btn = Button(top, text="Submit", command=(lambda: reply(ent.get()))) btn.pack(side=LEFT) top.mainloop() 

Todavía en 2018 una pregunta de google de alto rango. lo que me funciona en python3 es usar ico en Windows y gif en Linux:

 if ( sys.platform.startswith('win')): gui.iconbitmap('logo_Wicon.ico') else: logo = PhotoImage(file='logo.gif') gui.call('wm', 'iconphoto', gui._w, logo) 

Hay dos maneras,

1) use el archivo xbm en ubuntu, ya que ubuntu no podrá leer archivos ico. pero el problema aquí es que xbm solo puede mostrar imágenes en blanco y negro.

2) use tkinter.photoimage para mostrar la imagen del icono como se muestra abajo,

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

El problema aquí es que la fotoimagen puede leer solo imágenes GIF y PGM / PPM.

Vea los detalles aquí – https://stackoverflow.com/a/11180300

Tuve que convertir a un formato XBM y usar el siguiente root.iconbitmap (‘@ imagename.xbm’), sin embargo, mi plataforma es Ubuntu y descubrí que mi tema de sistema operativo no tiene lugar para la imagen …

import tkinter gui = tkinter.Tk() gui.iconbitmap() gui.mainloop()

En lugar de gui.iconbitmap (default = ‘/ home / me / PycharmProjects / program / icon.ico’) usé gui.iconbitmap (), esto solo funciona para mí.