La eliminación de los conocimientos tradicionales icono de una ventana Tkinter
-
23-08-2019 - |
Pregunta
¿Alguien sabe cómo hacer que el icono no se muestra?Estoy buscando una manera de no tener ningún icono en absoluto.
Solución
En Windows
Paso uno:
Crear un icono transparente utilizando un editor de iconos, o un sitio como rw-diseñador . Guardarlo 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 xbm
.
Otros consejos
Al igual que en la respuesta aceptada (con el aire 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 llevar un archivo adicional alrededor. Utilizando el mismo método, también se puede hacer un icono '' .xbm para Unix.
Edit: El ICON
se puede acortar aún más gracias a @Magnus Hoff :
import base64, zlib
ICON = zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy'
'sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='))
Por lo que yo sé, el más cercano se llega a un icono "en blanco" está utilizando uno que sea del mismo color que la barra de título de la ventana. Pero, de nuevo una gran cantidad de usuarios utilizan diferentes temas de color, por lo que no repasará muy bien.
Sin embargo, si se utiliza py2exe se puede usar algo como Resource Hacker puede alternar el icono. Pero en el estado de texto programas de Python, lo mejor que puede hacer es reemplazar. Tipo de archivos Jar cómo utilizar el icono de Java, aplicaciones Tkinter tendrá el icono de los conocimientos tradicionales. Después de todo ... como java, su aplicación está siendo traducido por un programa intermedio. Desde otro programa se está ejecutando su código, tiene que modificar ese otro programa. Por suerte Python / TK es un poco más flexible que la JVM en términos de iconos para que pueda reemplazar el icono. Pero la eliminación por completo no es actualmente una opción.
-John
basan en las respuestas anteriores i utiliza 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()
Actualización:
El modificado ligeramente el código (try
la cláusula en lugar de if TkVersion
), que produce una transparente (no) icono:
Linux (Mint 18.1), Python 2.7
Linux (Mint 18.1), Python 3.5.1
Windows 10, Python 2.7.13
Se produce un icono negro (no de trabajo) en:
Windows 8.1, Python 3.6
Una más vieja pregunta, pero las soluciones no fueron a trabajar para mí.He encontrado una parcial solución simple, con una pregunta de seguimiento, de mi propia.
La solución parcial (Tk 8.5, ver más abajo) - el uso de foto imagen del blank()
método:
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, la producción de la deseada "no hay ningún icono" para su nueva aplicación.
Sin embargo, en Python 3.6, Win 8.1, este atascos de la interfaz gráfica de usuario, que creo que está relacionado con los nuevos conocimientos tradicionales 8.6, y aunque me encontré con que el nuevo 8.6 notación de uso wm_iconphoto()
pasa unjammed 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()
Se produce un icono negro en 3.6, en lugar de la transparencia, en caso de 2.7/8.5.
Podría ser una manera de establecer los píxeles transparentes, uno por uno, utilizando "transparencia" - http://wiki.tcl.tk/1449
Sin embargo, no sé si incluso es factible a través de Tkinter.Dios favorece a los audaces, toca a los demás, aunque?
Actualizado pregunta:¿Por qué no esta el trabajo en Py3.6/Windows?
Alternativa a soluation @ de ubomb para añadir imágenes personalizadas mediante la utilización de Tkinter.PhotoImage
de soporte integrado para el procesamiento de imágenes .gif
.
A partir de archivo:
icon = Tkinter.PhotoImage(file="logo.gif")
de base 64:
gif_base64_string = """
R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
...
4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs=
"""
icon = Tkinter.PhotoImage(data=gif_base64_string)
effbot.org enlace para más detalles: