【PyQt】14-绘图-QPainter

文章目录

  • 前言
  • 一、QPainter
  • 二、绘制文本-drawText
      • Qt里面的文本对齐方式
    • 运行结果
  • 三、像素点
  • 总结


前言

1、学会画图方法


一、QPainter

通常可以绘制文本、各种图形(点、线、椭圆、弧、扇形、多边形等等)、图像。

必须在painrEvent事件方法中绘制各种元素。
基本框架
在这里插入图片描述

二、绘制文本-drawText

'''
#Author :susocool
#Creattime:2024/2/17
#FileName:36-绘制直线
#Description: 在窗口上绘制直线
'''import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QPainter,QColor,QFont
from PyQt5.QtCore import Qtclass DrawText(QWidget):def __init__(self):super().__init__()self.setWindowTitle('窗口上绘制文本')self.resize(300,200)self.text = '文本'def paintEvent(self,event):painter = QPainter(self)painter.begin(self)print('su')painter.setPen(QColor(150,43,5))painter.setFont(QFont('SimSun',25))painter.drawText(event.rect(),Qt.AlignCenter,self.text) painter.end()if __name__ == '__main__':app = QApplication(sys.argv)ui = DrawText()ui.show()sys.exit(app.exec_())

这里需要注意的点是,其实每次窗口大小发生改变,你的文字是重新被绘制上去的。在这里插入图片描述

Qt里面的文本对齐方式

在这里插入图片描述

  • AlignAbsolute:指定绝对对齐,即根据绝对坐标进行对齐。
  • AlignBaseline:指定文本基线对齐,即将文本的基线与矩形区域的基线对齐。
  • AlignBottom:指定底部对齐,即将元素底部与矩形区域的底部对齐。
  • AlignCenter:指定居中对齐,即在水平和垂直方向上将元素居中对齐。
  • AlignHCenter:指定水平居中对齐,即只在水平方向上将元素居中对齐。
  • AlignHorizontal_Mask:水平对齐的掩码,用于提取水平对齐的部分。
  • AlignJustify:指定两端对齐,即通过调整文本的间距使得两端对齐。
  • AlignLeading:指定前导对齐,通常与文本输入方向相关。
  • AlignLeft:指定左对齐,即将元素左侧与矩形区域的左侧对齐。
  • AlignRight:指定右对齐,即将元素右侧与矩形区域的右侧对齐。
  • AlignTop:指定顶部对齐,即将元素顶部与矩形区域的顶部对齐。
  • AlignTrailing:指定尾随对齐,通常与文本输入方向相关。
  • AlignVCenter:指定垂直居中对齐,即只在垂直方向上将元素居中对齐。
  • AlignVertical_Mask:垂直对齐的掩码,用于提取垂直对齐的部分。

运行结果

在这里插入图片描述

三、像素点

像素点绘制正弦曲线

'''
#Author :susocool
#Creattime:2024/2/17
#FileName:37-像素点绘制正弦曲线
#Description: drawPoint(x,y)'''
import sys , math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qtclass DrawPoints(QWidget):def __init__(self):super().__init__()self.setWindowTitle('正弦曲线')self.resize(300,300)def paintEvent(self,event):painter = QPainter(self)painter.begin(self)painter.setPen(Qt.blue)     # 以常量的形式获得颜色size = self.size()for i in range(1000):x = 100*(-1 + 2.0*i/1000)+size.width()/2.0y = -50*math.sin((x - size.width()/2.0)*math.pi /50) + size.height()/2.0painter.drawPoint(x,y)painter.end()if __name__ == '__main__':app = QApplication(sys.argv)main_ui = DrawPoints()main_ui.show()sys.exit(app.exec_())

因为内存告急,导致最终运行效果不成功QAQ,有能力了再补上成功的运行结果。


总结

这篇文章依旧没有总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse 分栏显示同一文件

Eclipse 分栏显示同一文件 1. Window -> EditorReferences 1. Window -> Editor Toggle Split Editor (Horizontal) :取消或设置水平分栏显示 Toggle Split Editor (Vertical) :取消或设置垂直分栏显示 References [1] Yongqiang Cheng, https:/…

Unity ScreenPointToRay 获取到的坐标不准确

👾奇奇怪怪的 🥙问题描述🥪解决方案🍿验证代码 🥙问题描述 使用:Camera.main.ScreenPointToRay 将鼠标坐标转换成射线,然后通过:Physics.Raycast 获取到射线碰撞到的坐标&#xff0…

windows安装Mysql解压版

windows安装Mysql解压版 一、下载mysql-8.0.36-winx64.zip二、解压三、配置3.1. 添加环境变量:新建MYSQL_HOME3.2.如何验证是否添加成功:必须以管理员身份启动3.3. 初始化MySQL:必须以管理员身份启动3.4. 注册MySQL服务:必须以管理…

OpenAI视频生成模型Sora背后的技术及其深远的影响

前言 Sora的视频生成技术在保真度、长度、稳定性、一致性、分辨率和文字理解等方面都达到了当前最优水平。其核心技术包括使用视觉块编码将不同格式的视频统一编码成Transformer可训练的嵌入向量,以及类似于扩散过程的UNet方法进行降维和升维的加噪与去噪操作。通过…

鸿蒙-基于ArkTS声明式开发的简易备忘录,适合新人学习,可用于大作业

本文地址:https://blog.csdn.net/qq_40785165/article/details/136161182?spm1001.2014.3001.5502,转载请附上此链接 大家好,我是小黑,一个还没秃头的程序员~~~ 不知不觉已经有很长一段时间没有分享过自己写的东西了&#xff0…

如何系统地学习Python

建议系统学习Python的途径遵循理论与实践相结合的教学方法。以下是一个分阶段的学习计划: 阶段一:基础知识 理解Python的特点: 认识Python的历史与设计哲学。学习Python的基本语法和运行环境。 安装Python: 学习如何在不同操作系…

鸿蒙应用模型开发-更新SDK后报错解决

更新SDK后提示 “ohos.application.Ability”/“ohos.application.AbilityStage”等模块找不到或者无相关类型声明 问题现象 更新SDK后报错“Cannot find module ‘ohos.application.AbilityStage’ or its corresponding type declarations”,“Cannot find modu…

修改vue-layer中title

左侧目录树点击时同步目录树名称 试了很多方法 layer.title(新标题,index)不知道为啥不行 最后用了获取html树来修改了 watch: {$store.state.nowTreePath: function(newVal, oldVal) {if (document.querySelectorAll(".lv-title") && document.q…

扶贫助农|基于springboot的扶贫助农系统设计与实现(源码+数据库+文档)

扶贫助农系统目录 目录 基于springboot的扶贫助农系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、扶贫任务管理 3、论坛信息管理 4、扶贫公告管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐…

GIS工具maptalks——初始化

GIS工具maptalks开发手册(一)——hello world初始化 为何使用maptalks? ​ Maptalks项目是一个HTML5的地图引擎, 基于原生ES6、Javascript开发的二三维一体化地图。 通过二维地图的旋转、倾斜增加三维视角,通过插件化设计, 能与其他图形库echarts、d3.j…

AI算法初识之分类汇总

一、背景 AI算法的分类方式多种多样,可以根据不同的学习机制、功能用途以及模型结构进行划分。以下是一些主要的分类方式及相应的代表性算法: 1. 按照学习类型 - **监督学习**: - 线性回归(Linear Regression) …

【Redis】深入理解 Redis 常用数据类型源码及底层实现(4.详解Hash数据结构)

Hash数据结构 看过前面的介绍,大家应该知道 Redis 的 Hash 结构的底层实现在 6 和 7 是不同的,Redis 6 是 ziplist 和 hashtable,Redis 7 是 listpack 和 hashtable。 我们先使用config get hash*看下 Redis 6 和 Redis 7 的 Hash 结构配置情况(在Redis客户端的命令行界面…

C/C++内存管理详解

目录 一、C内存分布 二、C语言与C内存管理方式 1、C语言中动态内存管理方式:malloc/calloc/realloc/free 2、C中的内存管理方式:new/delete 三、operator new与operator delete函数 1、函数概念: 2、函数使用: 3、底层原理…

Javaweb之SpringBootWeb案例之AOP通知顺序的详细解析

3.2 通知顺序 讲解完了Spring中AOP所支持的5种通知类型之后,接下来我们再来研究通知的执行顺序。 当在项目开发当中,我们定义了多个切面类,而多个切面类中多个切入点都匹配到了同一个目标方法。此时当目标方法在运行的时候,这多…

鸿蒙新手入门-环境准备问题解析

Node.js版本与API配套关系 由于SDK的部分工具依赖Node.js运行时,推荐使用配套API版本的Node.js,保证工程的兼容性。 匹配关系见下表: API LevelNode.js支持范围API Level≤914.x(≥14.19.1)、16.xAPI Level>914.…

利用R语言绘制相关性热图

数据示例(归一化处理后): install.packages("corrplot") install.packages("ggplot2") install.packages("ggpubr") library(corrplot) install.packages("GGally") library(GGally) library(ggplot…

读十堂极简人工智能课笔记06_自然语言处理

1. 聊天机器人 1.1. 人工智能往往掌握不了跨越几段对话语境的讨论 1.1.1. 抓不住连贯的主题,只能单独处理每个句子 1.1.2. 不能将其答案与现实联系起来 1.1.3. 可能会遵循语言规则、统计相关性,甚至查找有关事实来为每个新句子提供答复 1.2. 聊天机…

【JVM篇】什么是类加载器,有哪些常见的类加载器

文章目录 🍔什么是类加载器🛸有哪些常见的类加载器 🍔什么是类加载器 负责在类加载过程中,将字节码信息以流的方式获取并加载到内存当中 🛸有哪些常见的类加载器 启动类加载器 启动类加载器是有Hotspot虚拟机通过的类…

ETAS安装OS Port需要注意事项

安装OS Port用来配置OS和相关的中断;按照安装手册《HowToInstallingRTA-CAR.pdf》安装完OS PORT如下位置会有安装包(正确的安装位置) VRTA为虚拟OS :没有具体芯片和编译器的试用

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

背景 基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。 Note: 由于是测试环境,以下创建了一个 local-storage 的 StorageClass ,并使用本地…