在Python中使用Win32创建内存图标
在Python中,有什么好的方法可以在内存中生成一个图标吗?现在我只能使用pygame来绘制图标,然后把它保存为一个.ico文件,再从磁盘加载这个.ico文件作为图标资源……
大概是这样的:
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)
……这里的self.icon是我创建的图标的文件名。
有没有办法在内存中做到这一点?编辑一下:我想做的就是创建一个图标,上面显示一个两位数的数字(像天气或任务栏那种样式)。
3 个回答
0
这个对我来说是有效的,而且不需要用到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)
0
你可以创建一个对象,让它的行为像Python中的文件对象那样。
http://docs.python.org/library/stdtypes.html#bltin-file-objects
3
你可以使用 wxPython 来实现这个功能。
from wx import EmptyIcon
icon = EmptyIcon()
icon.CopyFromBitmap(your_wxBitmap)
wxBitmap 可以通过 wxMemoryDC 在内存中生成,想了解你可以在DC上做哪些操作,可以查看 这里。
然后这个图标可以应用到一个 wxFrame(窗口)或者 wxTaskBarIcon 上,使用:
frame.SetIcon(icon)