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

相关文章

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

pytorch之torch.flatten()和torch.nn.Flatten()的用法

《pytorch之torch.flatten()和torch.nn.Flatten()的用法》:本文主要介绍pytorch之torch.flatten()和torch.nn.Flatten()的用... 目录torch.flatten()和torch.nn.Flatten()的用法下面举例说明总结torch

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解