PyQt5之渐变填充

QPainter绘图


一、QPen主要功能

QPen用于绘图时设置线条,主要包括线宽,线型、颜色等。

QPen的主要接口函数

函数原型功能
setColor(color)设置画笔颜色,即线条颜色
setWidth(width)设置线条宽度为width个像素
setStyle(style)设置线条样式

二、QBrush主要功能

QBrush的主要接口函数

函数原型功能
setColor(color)设置画刷颜色,实体填充色
setStyle(style)设置画刷样式
setTexture(pixmap)设置一个Qpixmap类型的图片pixmap作为画刷的图片

代码如下:

ui_1024.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Widget(object):
    def setupUi(self, Widget):
        Widget.setObjectName("Widget")
        Widget.resize(573, 567)

        self.retranslateUi(Widget)
        QtCore.QMetaObject.connectSlotsByName(Widget)

    def retranslateUi(self, Widget):
        _translate = QtCore.QCoreApplication.translate
        Widget.setWindowTitle(_translate("Widget", "渐变填充"))

ui_1024_main.py

import sys

from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtCore import Qt, QRect, QPoint
from PyQt5.QtGui import QPainter, QPen, QRadialGradient, QLinearGradient, QColor

from ui_1024 import Ui_Widget

class QmyDD(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_Widget()
        self.ui.setupUi(self)

       # 在paintEvent()中,一般在绘图时会开启反走样以防锯齿,但是在单纯画直线时,要关闭反走样,否则画出来的直线会非常模糊并且会变粗
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing, False)
        pen = QPen()
        painter.setPen(pen)
        w = self.width()
        h = self.height()

        radial = QRadialGradient(w/10, h/10, w/4, w/10, h/10)
        radial.setColorAt(0.1, Qt.yellow)
        radial.setColorAt(1, Qt.blue)
        painter.setBrush(radial)
        rect1 = QRect(w/10, h/10, w/3, h/5)
        painter.drawRect(rect1)

        # QLinearGradient类构造函数指定渐变(起点,终点)
        line = QLinearGradient(QPoint(100, 100), QPoint(300, 300))
        # 成员函数setColorAt()设置起点和终点之间要显示的颜色
        line.setColorAt(0.1, Qt.green)
        line.setColorAt(0.8, Qt.blue)
        # 设置显示模式
        line.setSpread(QLinearGradient.RepeatSpread)
        # QPainter.setPen(QPen(QColor(100,100,50), 2))
        painter.setBrush(line)
        # rect2 = QRect(w / 2, h / 10, w / 3, h / 5)
        rect2 = QRect(200, 200, 180, 180)
        painter.drawEllipse(rect2)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    DD = QmyDD()
    DD.show()
    sys.exit(app.exec_())

运行结果:

渐变填充


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值