Python PyQt5——QPainter 绘图用法与代码示例

2024-04-03 10:28

本文主要是介绍Python PyQt5——QPainter 绘图用法与代码示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QPainter是Qt框架中的一个类,用于在Qt基于应用程序中进行绘图和绘制图形。

使用QPainter,可以绘制各种形状,如线条、矩形、椭圆和多边形,以及文本和图像。它提供了用于指定颜色、画笔、笔刷和变换的方法。

QPainter

在 PyQt5 中,绘图操作通常在 QWidget 的 paintEvent() 方法中完成。所有的绘图函数调用都必须位于 QPainter.begin() 和 QPainter.end() 之间。

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import Qtclass MyWidget(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('我的窗口')self.setGeometry(50, 50, 200, 150)def paintEvent(self, event):painter = QPainter()painter.begin(self)# 绘图操作...painter.end()if __name__ == '__main__':app = QApplication(sys.argv)w = MyWidget()w.show()sys.exit(app.exec_())

通过设置 QWidget 的调色板(palette),可以用 QPainter 来改变背景颜色。

from PyQt5.QtGui import QColor, QFont
from PyQt5.QtCore import Qtclass MyWidget(QWidget):# ... 省略其他代码 ...def initUI(self):# ... 省略其他代码 ...self.setAutoFillBackground(True)palette = self.palette()palette.setColor(self.backgroundRole(), Qt.white)  # 或者 Qt.blackself.setPalette(palette)# ... 省略其他代码 ...

绘制文本

QPainter 的 drawText() 函数允许指定文本的位置和对齐方式。可以通过设置画笔(QPainter.setPen())和字体(QPainter.setFont())来自定义文本的外观。

from PyQt5.QtGui import QColor, QFont, QPainter
from PyQt5.QtCore import Qt, QPoint, QRectclass MyWidget(QWidget):# ... 省略其他代码 ...def paintEvent(self, event):painter = QPainter()painter.begin(self)painter.setPen(QColor(0, 0, 255))painter.setFont(QFont('Arial', 20))painter.drawText(QPoint(10, 30), 'PyQt5')# ... 省略其他代码 ...painter.end()

绘制直线

from PyQt5.QtGui import QPenclass MyWidget(QWidget):# ... 省略其他代码 ...def paintEvent(self, event):painter = QPainter()painter.begin(self)pen = QPen(Qt.black, 2, Qt.SolidLine)painter.setPen(pen)painter.drawLine(20, 40, 180, 40)# ... 省略其他代码 ...painter.end()

绘制矩形

class MyWidget(QWidget):# ... 省略其他代码 ...def paintEvent(self, event):painter = QPainter()painter.begin(self)painter.setPen(Qt.black)painter.drawRect(QRect(10, 10, 80, 80))# ... 省略其他代码 ...painter.end()

绘制椭圆和圆

class MyWidget(QWidget):# ... 省略其他代码 ...def paintEvent(self, event):painter = QPainter()painter.begin(self)painter.setPen(Qt.black)painter.drawEllipse(QRect(10, 30, 40, 80))# ... 省略其他代码 ...painter.end()

绘制圆弧和圆形

class MyWidget(QWidget):# ... 省略其他代码 ...def paintEvent(self, event):painter = QPainter()painter.begin(self)painter.setPen(Qt.black)painter.drawArc(QRect(20, 20, 50, 50), 0, 90*16)  # 90度圆弧# ... 省略其他代码 ...painter.end()

绘制多边形:

from PyQt5.QtCore import QPointclass MyWidget(QWidget):# ... 省略其他代码 ...def paintEvent(self, event):painter = QPainter()painter.begin(self)painter.setPen(Qt.black)p1 = QPoint(40, 40)p2 = QPoint(60, 20)p3 = QPoint(80, 40)p4 = QPoint(80, 80)p5 = QPoint(40, 80)painter.drawPolygon([p1, p2, p3, p4, p5])# ... 省略其他代码 ...painter.end()

绘制图像

QPainter 还支持在 QWidget 上绘制图像。可以使用 QImage 或 QPixmap 来加载和显示图像。

from PyQt5.QtGui import QImageclass MyWidget(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# ... 省略其他代码 ...self.qimage = QImage('lena.jpg')def paintEvent(self, event):painter = QPainter()painter.begin(self)painter.drawImage(QRect(10, 10, 120, 120), self.qimage)painter.end()# ... 省略其他代码 ...

这篇关于Python PyQt5——QPainter 绘图用法与代码示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872659

相关文章

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函