美文网首页
PyQt5 QPen(画笔) 学习

PyQt5 QPen(画笔) 学习

作者: _Mirage | 来源:发表于2020-04-05 12:53 被阅读0次

The QPen is an elementary graphics object. It is used to draw lines, curves(曲线) and outlines of rectangles, ellipses(椭圆), polygons(多边形), or other shapes.

画笔主要是画边缘地区(也就是相当于素描勾勒形状但是不填充)

代码:

# coding='utf-8'

from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt
import sys


class Gui(QWidget):
    def __init__(self):
        super(Gui, self).__init__()
        self.start()

    def start(self):
        self.setGeometry(300, 300, 280, 270)
        self.setWindowTitle('画笔展示')
        self.show()

    # 这个slot在主窗体size改变时触发(比如从无到有也算是size改变)
    def paintEvent(self, e) -> None:
        qp = QPainter()
        qp.begin(self)
        # 绘制的主体内容在begin和end之间,begin的一个参数是绘制在哪个地方
        self.draw_lines(e, qp)
        qp.end()

    def draw_lines(self, e, qp):
        # 我们设置了六种不同风格的QPen对象\
        #     绘制了6种不同的直线
        # QPen的构造函数:
        """
        QPen()
        QPen(Qt.PenStyle)
        QPen(Union[QBrush, QColor,\
                Qt.GlobalColor, QGradient],\
                float, style: Qt.PenStyle = Qt.SolidLine,\
                cap: Qt.PenCapStyle = Qt.SquareCap,\
                join: Qt.PenJoinStyle = Qt.BevelJoin)
        QPen(Union[QPen, QColor, Qt.GlobalColor, QGradient])
        QPen(Any)
        """
        # 画笔的颜色设置成黑色,pix像素设置成2,笔的类型设置成连续的直线
        pen = QPen(Qt.black, 2, Qt.SolidLine)
        # 设置当前画笔对象为刚刚设置的画笔
        qp.setPen(pen)
        # 用这个画笔画第一条线,四个参数分别是(x0,y0) --> (x1,y1)\
        #         画这样一条直线.
        qp.drawLine(20, 40, 250, 40)

        # 给画笔设置一种新的风格:虚线(DashLine)
        pen.setStyle(Qt.DashLine)
        # 改变QPainter实例对象的画笔为刚刚刚刚更新后的画笔(虚线)
        qp.setPen(pen)
        qp.drawLine(20, 80, 250, 80)

        # 给画笔设置一种新的风格:虚点线(DashDotLine)\
        #         也就是每个虚线空白后加一个点
        pen.setStyle(Qt.DashDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 120, 250, 120)

        # 给画笔设置一种新的风格:点线(DotLine)\
        #         也就是全是点组成的线
        pen.setStyle(Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(20, 160, 250, 160)

        # 给画笔设置一种新的风格:虚点点线(DashDotDotLine)\
        #         也就是虚线加空白加两个点组成的线
        pen.setStyle(Qt.DashDotDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 200, 250, 200)

        # 这是将画笔的线设置成用户自定义的线类型\
        #     定义方法用setDashPattern
        pen.setStyle(Qt.CustomDashLine)
        # There must be an even number(偶数) of numbers.\
        #   Odd(奇数) numbers define a dash,\(奇数位次)
        #   even(偶数) numbers space.\(偶数位次)
        #   The greater the number, the greater the space\
        #   or the dash. Our pattern is 1px dash, 4px\
        #   space, 5px dash, 4px space etc.
        # 总结就是:1个px的点,4个px的空白,5个px的点,4个px的空白,这样循环
        pen.setDashPattern([1, 4, 3, 4])
        qp.setPen(pen)
        qp.drawLine(20, 240, 250, 240)


app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())

运行结果: image.png

相关文章

网友评论

      本文标题:PyQt5 QPen(画笔) 学习

      本文链接:https://www.haomeiwen.com/subject/vifuphtx.html