Erstellen Sie ein Symbol im Speicher mit win32 in Python
Frage
Was ist ein guter Weg, ein Symbol im Speicher in Python zu generieren? Im Moment bin ich gezwungen pygame zu verwenden, um das Symbol zu zeichnen, dann speichere ich es auf der Festplatte als ICO-Datei, und ich es dann laden von der Festplatte als ICO Ressource ...
So etwas wie folgt aus:
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)
... wo self.icon der Dateiname des Symbols I erstellt.
Gibt es eine Möglichkeit, dies in Erinnerung zu tun? EDIT: Alles, was ich tun möchte, ist ein Symbol mit einer 2-stellige Nummer auf sie (Wetter-Taskleiste angezeigt Stil erstellen
.Lösung
Sie können mit WxPython für diese.
from wx import EmptyIcon
icon = EmptyIcon()
icon.CopyFromBitmap(your_wxBitmap)
Die wxBitmap können im Speicher mit wxMemoryDC , schauen hier für Operationen, die Sie auf einem DC tun können.
Dieses Symbol kann dann auf eine wxFrame angewandt werden (ein Fenster) oder einen wxTaskBarIcon mit:
frame.SetIcon(icon)
Andere Tipps
Sie können sich wahrscheinlich ein Objekt erstellen, das den Python-Datei-Objekt-Schnittstelle nachahmt.
http://docs.python.org/library/stdtypes .html # bltin-Datei-Objekte
Das ist für mich arbeitet und nicht wx erforderlich.
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)