PyQt5之窗口绘图类控件QPainter

PyQt5之窗口绘图类控件QPainter

QPainter类在QWidget上执行绘图操作,它是一个绘图工具,为大部分图形界面提供了高度优化的函数,绘制操作在QWidget.paintEvent()中完成。绘制方法必须放在QtGui.QPainter对象的begin()end()之间。

一、QPainter类中的常用方法

方法描述
begin()开始在目标设备上绘制
drawArc()在起始角度和最终角度之间画弧
drawEllipse()在一个矩形内画一个椭圆
drawLine(int x1,int y1,int x2,int y2)绘制一条指定了端点坐标的线
drawPixmap()从图像文件中提取Pixmap并将其显示在指定的位置
drawPolygon()使用坐标数组绘制多边形
drawRect(int x,int y,int w,int h)以给定的高度和宽度从左上角坐标(x,y)绘制一个矩形
drawText()显示给定坐标处的文字
fillRect()使用QColor参数填充矩形
setBrush()设置画笔风格
setPen()设置用于绘制的笔的颜色、大小和样式

二、画笔风格

枚举类型描述
Qt.NoPen没有线
Qt.SolidLine一条简单的线
Qt.DashLine由一些像素分隔的短线
Qt.DotLine由一些像素分隔的点
Qt.DashDotLine轮流交替的点和短线
Qt.DashDotDotLine一条短线,两个点
Qt.MPenStyle画笔风格的掩码

三、绘制文字

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class Win(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(200, 200, 400, 400)
        self.setWindowTitle('在窗口中绘制文字')
        self.text = "Hello Python"

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.begin(self)
        self.drawText(event,painter)#自定义绘制方法
        painter.end()

    def drawText(self,event,qp):
        qp.setPen(QColor(168,34,3))#设置画笔的颜色
        qp.setFont(QFont('SimSun',20))#设置字体
        qp.drawText(event.rect(),Qt.AlignCenter,self.text)#绘制文字
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Win()
    form.show()
    sys.exit(app.exec_())

运行效果如下:
在这里插入图片描述

四、绘制点

import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class Win(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(200, 200, 400, 400)
        self.setWindowTitle('在窗口中绘制点')

    def paintEvent(self, event):
        painter = QPainter()
        painter.begin(self)
        #自定义绘制方法
        self.drawPoints(painter)
        painter.end()

    def drawPoints(self,painter):
        painter.setPen(Qt.red)#设置画笔的颜色
        size = self.size()
        for i in range(1000):
            x = 100*(-1+2.0*i/1000) + size.width()/2.0
            y = -50*math.sin((x-size.width()/2.0)*math.pi/50) + size.height()/2.0
            painter.drawPoint(x,y)
            
if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Win()
    form.show()
    sys.exit(app.exec_())

运行效果如下:

在这里插入图片描述

PyQt5是一个用于创建图形用户界面(GUI)的Python库,它提供了丰富的控件和功能。QDateEdit是PyQt5的一个日期控件,用于选择和编辑日期。 QDateEdit控件可以通过以下方式进行美化: 1. 设置样式表:可以使用CSS样式表来自定义QDateEdit的外观。通过设置样式表,可以修改背景颜色、边框样式、字体等属性,从而实现美化效果。 2. 设置图标:可以为QDateEdit添加图标,以增加视觉效果。可以使用QIcon来加载图标文件,并通过setIcon方法将图标设置给QDateEdit。 3. 自定义绘制:可以通过重写QDateEdit的paintEvent方法来自定义绘制控件。在paintEvent方法,可以使用绘图工具(QPainter)来绘制自定义的外观。 下面是一个示例代码,演示了如何美化QDateEdit控件: ```python from PyQt5.QtWidgets import QApplication, QDateEdit from PyQt5.QtGui import QIcon app = QApplication([]) # 创建QDateEdit控件 date_edit = QDateEdit() # 设置样式表 date_edit.setStyleSheet("background-color: #F0F0F0; border: 1px solid #CCCCCC; padding: 5px;") # 设置图标 icon = QIcon("calendar_icon.png") date_edit.setButtonSymbols(QDateEdit.CalendarButton) date_edit.setCalendarPopup(True) date_edit.setFixedWidth(200) date_edit.setFixedHeight(30) date_edit.setIcon(icon) # 显示控件 date_edit.show() app.exec_() ``` 这段代码创建了一个QDateEdit控件,并设置了背景颜色、边框样式、图标等属性,实现了简单的美化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值