Painter Shape over QIcon в PySide - PullRequest
0 голосов
/ 06 июля 2018

Как я могу добавить нарисованный прямоугольник к QIcon. Окончательный возвращаемый результат должен быть циконом, потому что я использую его для элемента управления, который ожидает цикон.

До

enter image description here

* После 1013 *:

enter image description here

import os, 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)

        self.btn = QtGui.QPushButton()
        self.btn.setFixedSize(128,128)
        icon = QtGui.QIcon('thumb.jpg')
        self.btn.setIconSize(icon.availableSizes()[0])
        self.btn.setIcon(icon)

        lay = QtGui.QVBoxLayout()
        lay.addWidget(self.btn)
        self.setLayout(lay)


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


if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 06 июля 2018

Вы должны прочитать изображение как 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()

enter image description here

...