【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 Qt

class 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 Qt

class 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.0
            y = -50*math.sin((x - size.width()/2.0)*math.pi /50) + size.height()/2.0
            painter.drawPoint(x,y)

        painter.end()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_ui = DrawPoints()
    main_ui.show()
    sys.exit(app.exec_())

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


总结

这篇文章依旧没有总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CES 2024:NVIDIA 通过新的笔记本电脑、GPU 和工具提供生成式 AI

在 CES 2024 上,NVIDIA 推出了一系列硬件和软件,旨在释放 Windows 11 PC 上生成式 AI 的全部潜力。 在 PC 上本地运行生成式 AI 对于隐私、延迟和成本敏感型应用程序至关重要。在 CES 上,NVIDIA 将在整个技术堆栈中带来新的创新,…

MATLAB导出图程序

本文将以代码的形式快速介绍MATLAB导出图到Paper 1 从simulation导出数 2 与simulation同源文件夹下创建导图m文件 代码如下: % 实验后的数据处理用 M-文件 % clear all % 清空工作空间 % close all      % 关闭所有图形窗口 % load adp.mat …

双指针算法+例题

1、性质 双指针算法&#xff0c;实质上是把朴素算法O&#xff08;n^2),发现一些性质&#xff0c;转换成 O&#xff08;N&#xff09;时间复杂度。 2、图解核心思想 3、代码模板 for(int i0,j0;i<n;i) {while(j<i && check(i,j)) j;//每道题目的具体逻辑 } 4…

对树莓派上配置mdadm的一些补充

1、如果要重新配置该如何回退到初始状态&#xff1f; 答&#xff1a;可参考以下指令&#xff1a; cat /proc/mdstat sudo umount /dev/md0 sudo mdadm --stop /dev/md0 sudo mdadm --zero-superblock /dev/sda sudo mdadm --zero-superblock /dev/sdb sudo nano /etc/fstab&a…

ModuleNotFoundError: No module named ‘torchvision.models.utils‘报错的一种解决方法

最近在做一个BEV项目&#xff0c;在配置环境的时候&#xff0c;遇到了报错的一个问题&#xff1a; ModuleNotFoundError: No module named ‘torchvision.models.utils’ 我开始以为是我没有安装torchvision pip install torchvision -i http://pypi.douban.com/simple输入这…

CSS-基础-MDN文档学习笔记

CSS构建基础 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever MDN中文官网 CSS选择器 选择器是什么 CSS 选择器是 CSS 规则的第一部分&#xff0c;它用来选择HTML元素&#xff0c;选择器所选择的元素&#xff0c;叫做选择器的对象 选择器列表 如果有多…

实战 | 使用CNN和OpenCV实现数字识别项目(步骤 + 源码)

导 读 本文主要介绍使用CNN和OpenCV实现数字识别项目,含详细步骤和源码。 前 言 在当今世界,深度学习和图像处理技术正在各个应用领域得到利用。在这篇博文中,我们将使用卷积神经网络 (CNN) 和 OpenCV 库完成数字识别项目。我们将逐步掌握该项目如何执行。 项目准…

安装 SEED-XDS560v2 Driver.exe

安装 SEED-XDS560v2 Driver.exe References CCS 5.5.0.00077 安装目录 D:\ti\ccsv5\ SEED-XDS560v2 Driver.exe 安装目录 D:\ti\ccsv5\ccs_base References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

【51单片机实验笔记】开关篇(二) 矩阵按键

目录 前言原理图分析矩阵按键扫描算法 软件实现1. 矩阵键盘检测2. 简易计算器实现 总结 前言 本节内容&#xff0c;我们学习一下矩阵按键&#xff0c;它是独立按键的阵列形式&#xff0c;常见的应用即键盘。 本节涉及到的封装源文件可在《模块功能封装汇总》中找到。 本节完…

jmeter-10调试取样器

文章目录 作用设置使用举例 作用 jmeter中添加调试取样器&#xff0c;可以用于检测测试过程的值如&#xff1a;变量、参数、系统设置等 设置 选择线程组右键 >>> 添加 >>> 取样器 >>> 调试取样器&#xff08;Debug Sampler&#xff09; jmeter …

Docker 镜像仓库是什么?有哪些镜像仓库命令?

1. Docker 的架构 &#xff08;图片来源&#xff1a;Docker架构图&#xff09; Registry&#xff08;Docker 仓库&#xff09; &#xff1a; Docker 仓库用来保存镜像&#xff0c;Docker 官方提供了一个公共的 Docker 仓库&#xff0c;称为 Docker Hub&#xff0c;开发者可以在…

函数、极限、连续——刷题(4

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 2.解题思路和步骤&#xff1a; 记住这个公式即可&#xff1a; 所以就很容易求解了&#xff1a; 3.总结&#xff1a; 记住这个公式即可&#xff1a; 小结&am…

使用 Coze 搭建 TiDB 助手

导读 本文介绍了使用 Coze 平台搭建 TiDB 文档助手的过程。通过比较不同 AI Bot 平台&#xff0c;突出了 Coze 在插件能力和易用性方面的优势。文章深入讨论了实现原理&#xff0c;包括知识库、function call、embedding 模型等关键概念&#xff0c;最后成功演示了如何在 Coze…

GIS使用 RUSLE 方法绘制土壤侵蚀风险图

侵蚀是指土壤在水或风的作用下离开其所在位置,它分为两种:自然侵蚀和加速侵蚀。水土流失实际上是一个自然过程,因此形成了肥沃的三角洲平原,但在人类活动的影响下,这一过程加速,水土流失超过了应有的程度。因此,农业生产率下降,生产成本上升,水坝寿命缩短,水质下降,…

11-k8s中网络资源service

一、service资源概述 每当我们企业的业务pod迭代功能的时候&#xff0c;都会修改pod&#xff0c;修改后重新启动pod&#xff0c;ip就会变化&#xff0c;那么在生产环境当中&#xff0c;从用户到宿主机、从宿主机到pod&#xff0c;这一个访问流程&#xff0c;都是事先写好的&…

【JavaScript】面试手写题精讲之数组(下)

引入 这章主要讲的是数组的排序篇&#xff0c;我们知道面试的时候&#xff0c;数组的排序是经常出现的题目。所以这块还是有必要进行一下讲解的。笔者观察了下前端这块的常用算法排序题&#xff0c;大概可以分为如下 冒泡排–> 稳定排序插入排序–> 稳定排序选择排序–…

你了解API测试吗?如何充分的测试一个API?

什么是API&#xff1f; API代表应用程序接口。API是软件系统中的中间层&#xff0c;负责数据源与用户看到的图形用户界面&#xff08;GUI&#xff09;之间的数据通信。换句话说&#xff0c;API是软件的业务层&#xff0c;它在表示层和数据层之间创建连接。 API测试侧重于所谓的…

Leecode之面试题消失的数字

一.题目及剖析 https://leetcode.cn/problems/missing-number-lcci/description/ 方法有很多,这里将两种时间复杂度为O(N)的方法 二.思路引入 第一种方法 先将0-n的总和求出来,在求出数组的总和,在做差就能得到消失的数字,不过要注意的是数据有可能溢出,这个方法很简单就不再…

Acwing二分和前缀和(二)

机器人跳跃问题 原题链接&#xff1a;https://www.acwing.com/activity/content/problem/content/1570/ 二分查找更新条件只有两种&#xff1a; Rmid;else Lmid1&#xff1a;mid(LR)/2Lmid;else R mid-1&#xff1a;mid(LR1)/2 这两种更新条件的结果是一样的。 #include<…

【Unity】【VR开发】针对VR项目的优化版Unity Build Settings

【背景】 编辑器中做了功能后,打包后却总会画面不满意,所以到处学习,总结成本篇,希望有用。 【准备】 本篇总结基于Unity 2021 LTS。 模板选择3D(URP) 如果URP不支持所用的部分Assets,那么也可以选择Built-in管线,不过URP肯定画面效果上要胜过Built-in。 HDRP不适用…