代码之家  ›  专栏  ›  技术社区  ›  JokerMartini

皮赛德齐孔上的画家造型

  •  0
  • JokerMartini  · 技术社区  · 6 年前

    我怎样才能在一个qicon上附加一个绘制的矩形。最后返回的结果必须是一个qicon,因为我在一个需要qicon的控件上使用它。

    以前 以下内容:

    enter image description here

    之后 以下内容:

    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 回复  |  直到 6 年前
        1
  •  1
  •   eyllanesc RAHUL KUMAR    6 年前

    你必须把图片读成 QPixmap ,使用 QPainter 修改 像素图 通过添加矩形并最终使用 像素图 创建 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