Question

Quel est le bon moyen de générer une icône en mémoire en python? Pour le moment, je suis obligé d'utiliser pygame pour dessiner l'icône, puis je l'enregistre sur le disque en tant que fichier .ico, puis je la charge à partir du disque en tant que ressource ICO ...

Quelque chose comme ça:

    if os.path.isfile(self.icon):
        icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
        hicon = win32gui.LoadImage(hinst,
                                   self.icon,
                                   win32con.IMAGE_ICON,
                                   0,
                                   0,
                                   icon_flags)

... où self.icon est le nom de fichier de l'icône que j'ai créée.

Existe-t-il un moyen de le faire en mémoire? EDIT: Tout ce que je veux faire est de créer une icône avec un numéro à 2 chiffres affiché (style barre météo.

Était-ce utile?

La solution

Vous pouvez utiliser wxPython pour cela.

from wx import EmptyIcon
icon = EmptyIcon()
icon.CopyFromBitmap(your_wxBitmap)

Le wxBitmap peut être généré en mémoire à l'aide de wxMemoryDC , recherchez ici pour les opérations que vous pouvez effectuer sur un DC.

Cette icône peut ensuite être appliquée à un wxFrame (une fenêtre) ou à un wxTaskBarIcon en utilisant:

frame.SetIcon(icon)

Autres conseils

Vous pouvez probablement créer un objet imitant l'interface fichier-objet python.

http://docs.python.org/library/stdtypes .html # objets-de-fichiers-bltins

Cela fonctionne pour moi et ne nécessite pas wx.

from ctypes import *
from ctypes.wintypes import *

CreateIconFromResourceEx = windll.user32.CreateIconFromResourceEx
size_x, size_y = 32, 32
LR_DEFAULTCOLOR = 0

with open("my32x32.png", "rb") as f:
    png = f.read()
hicon = CreateIconFromResourceEx(png, len(png), 1, 0x30000, size_x, size_y, LR_DEFAULTCOLOR)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top