【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.hqwc.cn/news/473464.html

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

相关文章

StarRocks表设计——分区分桶与副本数

目录 一、数据分布 1.1 概述 1.2 数据分布方式 1.2.1 Round-Robin 1.2.2 Range 1.2.3 List 1.2.4 Hash 1.3 StarRocks的数据分布方式 1.3.1 不分区 Hash分桶 1.3.2 Range分区Hash分桶 三、分区 3.1 分区概述 3.2 创建分区 3.2.1 手动创建分区 3.2.2 批量创建分区…

实现低功耗设计的嵌入式系统技术

(本文为简单介绍,观点来源网络) 在嵌入式系统设计中,追求低功耗已成为一个核心指标,旨在延长设备的运行时间并提升能效。实现这一目标的途径是多元的,涉及从硬件选型到软件算法的各个层面。 首先&#xf…

MATLAB通信系统仿真设计——基于BPSK的直接序列扩频通信系统仿真

一.实验原理 直接序列扩频,就是直接用高码率的扩频码序列在发端去扩展信号的频谱,在收端用相同的扩频码去解扩,把展宽的扩频信号还原成原始的基带信号。 在发端输入的信息与扩频码发生器产生的伪随机码序列(这里使用的是m序列&am…

指针习题回顾(C语言)

目录 数组指针和指针数组 编程题: 字符串逆序 字符串左旋 题目1概述: 代码实现: 题目2概述: 代码实现: 调整奇偶顺序 题目概述: 代码实现: 冒泡排序 二级指针 代码解读: …

阅读笔记(BMSB 2018)Video Stitching Based on Optical Flow

参考文献 Xie C, Zhang X, Yang H, et al. Video Stitching Based on Optical Flow[C]//2018 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB). IEEE, 2018: 1-5. 摘要 视频拼接在计算机视觉中仍然是一个具有挑战性的问题&#xff0…

概率基础——二项分布

概率基础——二项分布 介绍 在统计学中,二项分布是一种离散型概率分布,它描述了在一系列独立同分布的伯努利试验中成功的次数。这里我们以抛硬币为例,将一个硬币抛掷 n n n次,每次抛掷结果为正面向上的概率为 p p p,…

吴恩达深度学习-L1 神经网络和深度学习总结

作业地址:吴恩达《深度学习》作业线上版 - 知乎 (zhihu.com) 写的很好的笔记:吴恩达《深度学习》笔记汇总 - 知乎 (zhihu.com) 我的「吴恩达深度学习笔记」汇总帖(附 18 个代码实战项目) - 知乎 (zhihu.com) 此处只记录需…

顺序表(下)

1.扩容的实现(在使用这些函数时包含其头文件) 2.初始化(给定一个初始值) 3.销毁 (也就是将空间释放,并将指针赋为空指针) 4.插入 1.头插 2.尾插 3.任意位置插入 5.删除 1.头删 2.尾删 3.任意…

池化层1x1的作用!

池化层11的尺寸虽然很小,但在卷积神经网络中仍然具有降维的作用。尽管它不会改变特征图的空间尺寸,但通过减少特征图的通道数,池化层11可以实现降维的效果。这有助于减少计算量和参数数量,提高模型的效率和性能。 11的池化层具体…

mysql 2-16

安全等于<> 最大最小LEAST,GREATEST BETWEEN AND 条件一是下限 IN LIKE关键字 转移字符 逻辑运算符 位运算符 排序数据 升序降序&#xff0c;默认升序 二级排序 8.0新特性 小拓展 多表查询 多表查询 别名 多表查询的分类 非等值连接 自连接 内连接与外连接 sql92实现外连…

c高级day4作业

终端输入一个字符&#xff0c;判断是大写字母小写字母还是数字字符。 #!/bin/bash read -p "input字符--->" a case $a in[[:upper:]])echo 大写字母$a;;[[:lower:]])echo 小写字母$a;;[0-9])echo 数字字符$a;;*)echo "error" esac终端输入年月&#x…

防御保护--内容安全过滤

目录 文件过滤 内容过滤技术 邮件过滤技术 应用行为控制技术 DNS过滤 URL过滤 防火墙 ---- 四层会话追踪技术 入侵防御 ---- 应用层深度检测技术 深度包检测深度流检测 随着以上俩种的成熟与完善&#xff0c;提出了所谓的内容安全过滤 当然上网行为确实需要治理&…