Pergunta

Alguém sabe como fazer o ícone não aparecer? Eu estou procurando uma maneira de ter nenhum ícone em tudo.

Foi útil?

Solução

No Windows

Passo:

Criar um ícone transparente usando um editor de ícones, ou um site como rw designer . Guardá-lo como transparent.ico.

Etapa dois:

from tkinter import *

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

No Unix

Algo semelhante, mas usando um ícone xbm.

Outras dicas

Assim como a resposta aceita (com a con de ser mais feio):

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()

Apenas cria o arquivo em tempo real em vez disso, para que você não tem que carregar um arquivo extra ao redor. Usando o mesmo método, você também pode fazer um '.xbm' ícone para Unix.

Edit: O ICON pode ser abreviado ainda mais graças a @Magnus Hoff :

import base64, zlib

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

Tanto quanto eu sei, o mais próximo que você vai chegar a um ícone "em branco" está usando um que é da mesma cor que a barra de título da janela. Mas, novamente um monte de usuários usar temas de cores diferentes, por isso não vai passar por cima muito bem.

No entanto, se você usar py2exe você pode usar algo como Resource Hacker para trocar o ícone. Mas no estado de texto programas em Python, o melhor que você pode fazer é substituir. Classificar de como arquivos Jar usar o ícone java, apps Tkinter terão o ícone TK. Afinal ... como java, seu aplicativo está sendo traduzida por um programa intermediário. Desde um outro programa está em execução o seu código, você tem que modificar esse outro programa. Felizmente python / TK é um pouco mais flexível do que a JVM em termos de ícones para que você possa substituir o ícone. Mas removê-lo completamente não está neste momento uma opção.

-John

Com base nas respostas anteriores eu usei esta solução:

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()

Update: ?

O código ligeiramente modificada (cláusula try vez de if TkVersion) produz um ícone transparente (não) em:

Linux (Mint 18.1), Python 2.7

Linux (Mint 18.1), Python 3.5.1

Windows 10, Python 2.7.13

Ela produz um ícone de preto (não funciona) em:

Windows 8.1, Python 3.6

Uma questão bastante antiga, mas as soluções não estavam funcionando para mim. Eu encontrei uma solução simples parcial, com uma pergunta de acompanhamento do meu próprio.

A solução parcial (Tk 8,5, ver abaixo) - usando o método de 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()

Em Python 2.7, Windows 10, esta multa funciona, produzindo o desejado "no ícone" para o seu novo aplicativo.

No entanto, em Python 3.6, Win 8.1, este congestionamentos do GUI, que eu acho que está relacionada com a mais recente Tk 8.6, e embora eu achei que o novo 8.6 notação de usar wm_iconphoto() não passar unjammed neste 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()

Ela produz um ícone de preto em 3.6, em vez de um transparente em caso de 2.7 / 8.5.

Pode haver uma maneira de definir os pixels um transparente por um usando "set transparência" - http://wiki.tcl.tk/1449

No entanto, eu não sei se é mesmo factível via Tkinter. Deus favorece os audazes, alguém de transformar embora?

questão Atualizado :? Por que isso não funciona em Py3.6 / Windows

Alternativa para @ soluation de ubomb para adicionar imagens personalizadas, utilizando Tkinter.PhotoImage de suporte embutido para o processamento de imagens .gif.

Do arquivo:

icon = Tkinter.PhotoImage(file="logo.gif")

a partir de base64:

gif_base64_string = """ R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh ... 4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs= """

icon = Tkinter.PhotoImage(data=gif_base64_string)

effbot.org o link para mais detalhes:

http://effbot.org/tkinterbook/photoimage.htm

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top