Python 在PySide的QIcon上的画家造型

Python 在PySide的QIcon上的画家造型,python,pyside,Python,Pyside,如何将绘制的矩形附加到QIcon。最终返回的结果必须是一个qicon,因为我在一个需要qicon的控件上使用它 之前: 之后: 您必须将图像读取为QPixmap,使用QPainter通过添加矩形修改QPixmap,最后使用QPixmap创建QIcon import sys from PySide import QtCore, QtGui class Example(QtGui.QWidget): def __init__(self, *args, **kwargs):

如何将绘制的矩形附加到QIcon。最终返回的结果必须是一个qicon,因为我在一个需要qicon的控件上使用它

之前

之后


您必须将图像读取为
QPixmap
,使用
QPainter
通过添加矩形修改
QPixmap
,最后使用
QPixmap
创建
QIcon

import sys

from PySide import QtCore, QtGui


class Example(QtGui.QWidget):
    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs)
        self.resize(600,400)

        lay = QtGui.QHBoxLayout(self)

        pixmap = QtGui.QPixmap('thumb.jpg')
        painter = QtGui.QPainter(pixmap)
        painter.fillRect(QtCore.QRect(20, 20, 40, 40), QtGui.QColor("red"))
        painter.end()

        for icon in (QtGui.QIcon('thumb.jpg'), QtGui.QIcon(pixmap)):
            btn = QtGui.QPushButton()
            btn.setFixedSize(128,128)
            btn.setIconSize(icon.availableSizes()[0])
            btn.setIcon(icon)
            lay.addWidget(btn)

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

import sys

from PySide import QtCore, QtGui


class Example(QtGui.QWidget):
    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs)
        self.resize(600,400)

        lay = QtGui.QHBoxLayout(self)

        pixmap = QtGui.QPixmap('thumb.jpg')
        painter = QtGui.QPainter(pixmap)
        painter.fillRect(QtCore.QRect(20, 20, 40, 40), QtGui.QColor("red"))
        painter.end()

        for icon in (QtGui.QIcon('thumb.jpg'), QtGui.QIcon(pixmap)):
            btn = QtGui.QPushButton()
            btn.setFixedSize(128,128)
            btn.setIconSize(icon.availableSizes()[0])
            btn.setIcon(icon)
            lay.addWidget(btn)

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()