Question

Quelqu'un sait comment faire l'icône apparaît pas? Je suis à la recherche d'un moyen d'avoir aucune icône du tout.

Était-ce utile?

La solution

Sous Windows

Première étape:

Créer une icône transparente en utilisant soit un éditeur d'icônes, ou un site comme rw-designer . Enregistrer comme transparent.ico.

Deuxième étape:

from tkinter import *

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

Sur Unix

Quelque chose de similaire, mais en utilisant une icône de xbm.

Autres conseils

Tout comme la réponse acceptée (avec le con d'être plus laid):

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

Il crée simplement le fichier à la volée à la place, de sorte que vous ne devez pas porter un fichier supplémentaire autour. En utilisant la même méthode, vous pouvez aussi faire une icône « .xbm » pour Unix.

Edit: Le ICON peut être raccourci encore plus loin grâce à @Magnus Hoff :

import base64, zlib

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

Pour autant que je sache, le plus proche, vous arriverez à une icône « vide » utilise qui est la même couleur que la barre de titre de la fenêtre. Mais là encore beaucoup d'utilisateurs utilisent différents thèmes de couleurs, donc il ne va pas très bien passé.

Toutefois, si vous utilisez py2exe vous pouvez utiliser quelque chose comme Resource Hacker pour échanger sur l'icône. Mais dans l'état du texte des programmes de python, le mieux que vous pouvez faire est de remplacer. Trier de la façon dont les fichiers Jar utilisent l'icône java, applications Tkinter aura l'icône TK. Après tout ... comme java, votre application est en cours de traduction par un programme intermédiaire. Depuis un autre programme en cours d'exécution est votre code, vous devez modifier cet autre programme. Heureusement python / tk est un peu plus souple que la machine virtuelle Java en termes d'icônes afin que vous pouvez remplacer l'icône. Mais le retirer entièrement est pas une option.

-John

D'après les réponses précédentes je l'ai utilisé cette solution:

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

Mise à jour:

Le code légèrement modifié (clause de try au lieu de if TkVersion) produit une icône transparente (non) sur:

Linux (Mint 18.1), Python 2.7

Linux (Mint 18.1), Python 3.5.1

Windows 10, Python 2.7.13

Il produit une icône noire (ne fonctionne pas) sur:

de Windows 8.1, Python 3.6

Une question assez ancienne, mais les solutions ne fonctionnaient pas pour moi. J'ai trouvé une solution simple partielle, avec une question de mon propre suivi.

La solution partielle (Tk 8.5, voir ci-dessous) - en utilisant la méthode de blank() de 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()

Le Python 2.7, Windows 10, cela fonctionne très bien, la production souhaité « aucune icône » pour votre nouvelle application.

Cependant, Python 3.6, Win 8.1, ce enraye l'interface graphique, qui je pense est lié à la plus récente Tk 8.6, et bien que je trouve que la nouvelle 8.6 la notation de l'utilisation wm_iconphoto() ne passe non brouillées dans ce cas:

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

Il produit une icône rouge 3,6, au lieu de l'une transparente en cas de 2,7 / 8,5.

Il pourrait y avoir un moyen de définir les pixels d'un transparent en utilisant une « transparence set » - http://wiki.tcl.tk/1449

Cependant, je ne sais pas s'il est encore faisable via Tkinter. Dieu favorise le gras, tour d'un autre bien?

question Mise à jour : Pourquoi pas ce travail sur Py3.6 / Windows

Alternative au soluation de @ ubomb pour ajouter des images personnalisées en utilisant un support intégré pour le traitement de Tkinter.PhotoImage images .gif.

À partir du fichier:

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

de base64:

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

icon = Tkinter.PhotoImage(data=gif_base64_string)

effbot.org lien pour plus de détails:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top