ventana toplevel libreria interfaz grafica example cerrar python python-3.x tkinter tk

toplevel - tkinter python example



Eliminar el ícono de TK en una ventana de Tkinter (5)

En Windows

Paso uno:

Cree un icono transparente utilizando un editor de iconos o un sitio como rw-designer . Guárdelo como transparent.ico .

Segundo paso:

from tkinter import * tk = Tk() tk.iconbitmap(default=''transparent.ico'') lab = Label(tk, text=''Window with transparent icon.'') lab.pack() tk.mainloop()

En Unix

Algo similar, pero usando un icono de xbm .

¿Alguien sabe cómo hacer que el ícono no aparezca? Estoy buscando una forma de no tener ningún icono.


En base a respuestas anteriores, utilicé esta solución:

from PIL import ImageTk import zlib,base64 import Tkinter icon=zlib.decompress(base64.b64decode(''eJxjYGAEQgEBBiDJwZDBy'' ''sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='')) root=Tkinter.Tk() image=ImageTk.PhotoImage(data=icon) root.tk.call(''wm'', ''iconphoto'', root._w, image) root.mainloop()


Por lo que yo sé, lo más cerca que llegarás a un ícono "en blanco" es usar uno que sea del mismo color que la barra de título de la ventana. Pero, de nuevo, muchos usuarios utilizan diferentes temas de color, por lo que no van a funcionar muy bien.

Sin embargo, si usas py2exe puedes usar algo como Resource Hacker para cambiar el ícono. Pero en el estado de texto de los programas de python, lo mejor que puede hacer es reemplazar. Más o menos como los archivos Jar usan el ícono de java, las aplicaciones de tkinter tendrán el ícono de TK. Después de todo ... como Java, su aplicación está siendo traducida por un programa intermedio. Como otro programa ejecuta su código, debe modificar ese otro programa. Afortunadamente, python / tk es un poco más flexible que la JVM en términos de iconos, por lo que puedes reemplazar el ícono. Pero eliminarlo completamente no es actualmente una opción.

-John


Similar a la respuesta aceptada (con la estafa de ser más feo):

import tkinter import tempfile ICON = (b''/x00/x00/x01/x00/x01/x00/x10/x10/x00/x00/x01/x00/x08/x00h/x05/x00/x00'' b''/x16/x00/x00/x00(/x00/x00/x00/x10/x00/x00/x00 /x00/x00/x00/x01/x00'' b''/x08/x00/x00/x00/x00/x00@/x05/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00'' b''/x00/x01/x00/x00/x00/x01'') + b''/x00''*1282 + b''/xff''*64 _, ICON_PATH = tempfile.mkstemp() with open(ICON_PATH, ''wb'') as icon_file: icon_file.write(ICON) tk = tkinter.Tk() tk.iconbitmap(default=ICON_PATH) label = tkinter.Label(tk, text="Window with transparent icon.") label.pack() tk.mainloop()

Simplemente crea el archivo sobre la marcha en su lugar, por lo que no tiene que cargar un archivo adicional. Usando el mismo método, también podría hacer un ícono ''.xbm'' para Unix.

Editar: El ICON se puede acortar aún más gracias a @Magnus Hoff :

import base64, zlib ICON = zlib.decompress(base64.b64decode(''eJxjYGAEQgEBBiDJwZDBy'' ''sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc=''))


Actualizar:

El código ligeramente modificado (cláusula try lugar de if TkVersion ) produce un icono transparente (no) en:

Linux (Mint 18.1), Python 2.7

Linux (Mint 18.1), Python 3.5.1

Windows 10, Python 2.7.13

Produce un icono negro (no funciona) en:

Windows 8.1, Python 3.6

Una pregunta bastante antigua, pero las soluciones no me funcionaban. Encontré una solución parcial simple, con una pregunta de seguimiento propia.

La solución parcial (Tk 8.5, ver abajo) - usando el método en blank() PhotoImage:

from Tkinter import * root=Tk() icon=PhotoImage(height=16, width=16) icon.blank() root.tk.call(''wm'', ''iconphoto'', self.master._w, icon) root.mainloop()

En Python 2.7, Windows 10, esto funciona bien, produciendo el "no icono" deseado para su nueva aplicación.

Sin embargo, en Python 3.6, Win 8.1, esto atasca la GUI, que creo que está relacionado con el Tk 8.6 más nuevo, y aunque encontré que la nueva notación 8.6 de usar wm_iconphoto() pasa sin bloquearse en este caso:

try: from tkinter import * except: from Tkinter import * root=Tk() #Identical for Py2.7/Tk8.5 and Py3.5/Tk8.6 icon=PhotoImage(height=16, width=16) icon.blank() #Picking a notaion based on Tk version to avoid jamming try: root.wm_iconphoto(''True'', icon) #New Tk 8.6 style else: #Jams Python 3.5 with Tk 8.6 on Windows root.tk.call(''wm'', ''iconphoto'', self.master._w, icon) root.mainloop()

Produce un icono negro en 3.6, en lugar del transparente en caso de 2.7 / 8.5.

Puede haber una manera de establecer los píxeles transparentes uno por uno usando "transparencia establecida" - http://wiki.tcl.tk/1449

Sin embargo, no sé si es posible mediante Tkinter. Aunque Dios favorece a los audaces, ¿le toca a alguien más?

Pregunta actualizada : ¿Por qué esto no funciona en Py3.6 / Windows?