• Python win32api提取exe图标icon


    转载地址: http://blog.csdn.net/gumanren/article/details/6129416

    代码如下:

     1 # -*- coding: utf-8 -*-  
     2 import sys
     3 import win32ui
     4 import win32gui
     5 from PyQt4 import QtCore
     6 from PyQt4 import QtGui
     7 class testWindow(QtGui.QMainWindow):
     8     def __init__(self):
     9         super(testWindow, self).__init__()
    10         self.setGeometry(180.0, 130.0, 280.0, 200.0)
    11         self.setMouseTracking(True)
    12         large, small = win32gui.ExtractIconEx(r"netbeans.exe", 0)
    13         win32gui.DestroyIcon(small[0])
    14         self.pixmap = QtGui.QPixmap.fromWinHBITMAP(self.bitmapFromHIcon(large[0]), 2)
    15         
    16         self.pixmap.save("a.ico","ico")
    17         
    18     def bitmapFromHIcon(self, hIcon):
    19         hdc = win32ui.CreateDCFromHandle(win32gui.GetDC(0))
    20         hbmp = win32ui.CreateBitmap()
    21         hbmp.CreateCompatibleBitmap(hdc, 32, 32)
    22         hdc = hdc.CreateCompatibleDC()
    23         hdc.SelectObject(hbmp)
    24         hdc.DrawIcon((0, 0), hIcon)
    25         hdc.DeleteDC()
    26         return hbmp.GetHandle()
    27     # paintevent事件
    28     def paintEvent(self, event):
    29         # palette 调色板多个pix显示,   
    30         painter = QtGui.QPainter()
    31         palette = QtGui.QPalette()
    32         palette.setBrush(self.backgroundRole(), QtGui.QBrush(QtGui.QPixmap(self.pixmap)))   # 设置背景图片
    33         self.setPalette(palette)
    34         #painter绘图类只显示一个
    35         #painter.begin(self)
    36         #painter.setRenderHint(QtGui.QPainter.Antialiasing)
    37         #painter.setPen(QtCore.Qt.NoPen)
    38         #painter.setBrush(QtGui.QBrush(QtGui.QColor(255.0, 255.0, 255.0, 255.0), QtCore.Qt.SolidPattern))
    39         #painter.drawRect(QtCore.QRect(0.0, 0.0, 280.0, 400.0))
    40         #painter.drawPixmap(QtCore.QRect(0.0, 0.0, 32.0, 32.0), self.pixmap)
    41         #painter.end()
    42 if __name__ == "__main__":
    43     app = QtGui.QApplication(sys.argv)
    44     mainWindow = testWindow()
    45     mainWindow.show()
    46     app.exec_()

    显示效果:

     

  • 相关阅读:
    WPF 中英文切换
    System.Data.Entity.Core.ProviderIncompatibleException:0x89c50107
    WinForm使用原生gdi+绘制自定义曲线图、折线图
    C#使用EPPlus读写excel
    ICSharpCode.SharpZipLib C# 压缩文件夹SharpZipHelper
    C# XSLT 转换word 生成word
    代码生成器集合
    优秀的个人博客
    面试经典复习资料
    图解算法
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4450400.html
Copyright © 2020-2023  润新知