Domanda

Qual è un buon modo per generare un'icona in memoria in Python? In questo momento sono costretto a usare pygame per disegnare l'icona, quindi lo salvo su disco come file .ico e quindi lo carico dal disco come risorsa ICO ...

Qualcosa del genere:

    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)

... dove self.icon è il nome file dell'icona che ho creato.

C'è un modo per farlo in memoria? EDIT: Tutto quello che voglio fare è creare un'icona con un numero di 2 cifre visualizzato su di esso (stile barra delle applicazioni meteo.

È stato utile?

Soluzione

Puoi usare wxPython per questo.

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

wxBitmap può essere generato in memoria usando wxMemoryDC , guarda qui per le operazioni che puoi eseguire su un controller di dominio.

Questa icona può quindi essere applicata a un wxFrame (una finestra) o un wxTaskBarIcon usando:

frame.SetIcon(icon)

Altri suggerimenti

Probabilmente puoi creare un oggetto che imita l'interfaccia file-object di Python.

http://docs.python.org/library/stdtypes .html # bltin-file-oggetti

Questo funziona per me e non richiede 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top