【PyQt】14-绘图-QPainter

news2024/11/23 18:31:41

文章目录

  • 前言
  • 一、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,有能力了再补上成功的运行结果。


总结

这篇文章依旧没有总结

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

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

相关文章

win32汇编获取系统信息

.data fmt db "页尺寸&#xff1a;%d",0 db "" lpsystem SYSTEM_INFO <?> szbuf db 200 dup(0) .const szCaption db 系统信息,0 .code start: invoke GetSystemInfo,addr lpsystem …

php 函数(方法)、日期函数

php 函数、日期函数 1. php函数2. 日期函数 1. php函数 <?php// 创建一个函数 function hello($who) {echo $who.Hello World!; }hello("老张");给参数一个默认值&#xff0c;当然自己有变量走自己的 2. 日期函数 <?php/** date(Y-m-d H:i:s)返回的时间是…

anaconda安装路径默认在D盘,但安装环境的envs路径跑到C盘,修改为D盘

安装的anaconda环境&#xff0c;路径是在anaconda安装目录下的envs中&#xff08;D:\APPFile\Anaconda3\envs&#xff09;&#xff0c;然而&#xff0c;这次创建的却是在 C:\Users\xxx.conda\envs 中。 首先&#xff0c;找到用户目录下的.condarc文件&#xff08;C:\Users\use…

MOSFET栅极应用电路分析汇总(驱动、加速、保护、自举等等)

概述 MOSFET是一种常见的电压型控制器件&#xff0c;具有开关速度快、高频性能、输入阻抗高、噪声小、驱动功率小、动态范围大、安全工作区域(SOA)宽等一系列的优点&#xff0c;因此被广泛的应用于开关电源、电机控制、电动工具等各行各业。栅极做为MOSFET本身较薄弱的环节&am…

Android安卓架构MVC、MVP、MVVM模式的概念与区别

目录 MVC框架 MVP框架 MVVM框架 MVVM与MVP区别 MVVM与MVC区别 MVC、MVP、MVVM模式哪个要好一些 MVC&#xff08;Model-View-Controller&#xff09;、MVP&#xff08;Model-View-Presenter&#xff09;、MVVM&#xff08;Model-View-ViewModel&#xff09;是三种常见的软…

数据库第五次实验

目录 1 创建数据表 2 创建多个用户 ​​​​​​​3 用户的授权 ​​​​​​​4 用户权限的回收 ​​​​​​​5 角色的创建与授权 ​​​​​​​6 回收角色的权利 ​​​​​​​7 审计的设置 1 创建数据表 SQL语句&#xff1a; use experimentfive; create table…

游戏安全组件运行时发生异常1-0-0

可能是这个服务&#xff0c;可能被禁用了。 如果是文件缺少直接修复游戏

鸿蒙应用开发工程师招聘多吗?工资有多少呢?

随着鸿蒙操作系统的快速普及&#xff0c;越来越多的企业开始重视鸿蒙应用开发人才的培养和引进。那么&#xff0c;目前市场上鸿蒙应用开发工程师招聘多吗&#xff1f;工资有多少呢&#xff1f; 首先&#xff0c;我们来了解一下鸿蒙应用开发工程师的招聘情况。随着鸿蒙操作系统…

【头歌·计组·自己动手画CPU】四、控制器设计(理论版) 【计算机硬件系统设计】

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎 ❤️关注 &#x1f44d;点赞 &#x1f64c;收藏 ✍️留言 文章目录 一、课程设计目的二、课程设计内容三、课程设计步骤四、课程设计总结 一、课程设计目的 掌握 CPU …

每日一题 429.N叉树的层序遍历

429. N 叉树的层序遍历 描述&#xff1a; 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1…

Jetson下的i2c、spi、gpio、can、uart、485代码示例使用说明

适用于刚接触新设备的同学参考。 UART 演示代码 目前&#xff0c;这是一个简单的 Python 3 脚本&#xff0c;用于与 NVIDIA Jetson Nano 开发套件的 J41 头上的 UART 进行交互。当然只要是jetson都可以用&#xff0c;改一下程序里面的设备节点就行 JetsonHacks 上的原始文章&…

一起学量化之Aroon指标

Aroon指标是由Tushar Chande于1995年开发的技术分析工具,旨在识别股票是否处于趋势中及趋势的强度。它通过分析股票价格在一定周期内创下的新高和新低来预测趋势的变化,这基于一种观念:强势趋势通常伴随着频繁的新高或新低。 1. Aroon指标的组成 Aroon指标由两个部分组成:…

Manifest merger failed with multiple errors, see logs

问题 Manifest merger failed with multiple errors, see logs详细问题 笔者进行Android 项目开发&#xff0c;修改AndroidManifest.xml代码后&#xff0c;控制台报错 AndroidManifest.xml报错核心代码 <manifest><uses-permission android:name"android.perm…

问题:在额定电压500V以下的电路中,使用的各种用电设备,一般称为(_ _ _)用电设备 #媒体#媒体#媒体

问题&#xff1a;在额定电压500V以下的电路中,使用的各种用电设备,一般称为&#xff08;_ _ _)用电设备 参考答案如图所示

鸿蒙开发系列教程(二十三)--List 列表操作(2)

列表样式 1、设置内容间距 在列表项之间添加间距&#xff0c;可以使用space参数&#xff0c;主轴方向 List({ space: 10 }) { … } 2、添加分隔线 分隔线用来将界面元素隔开&#xff0c;使单个元素更加容易识别。 startMargin和endMargin属性分别用于设置分隔线距离列表侧…

Unity类银河恶魔城学习记录7-7 P73 Setting sword type源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill_Controller.cs using System.Collections; using System.Col…

C#开源免费的Windows右键菜单管理工具

前言 今天分享一个C#开源、免费、纯粹的Windows右键菜单管理工具&#xff1a;ContextMenuManager。 工具主要功能 程序支持国际化多语言显示。启用或禁用文件、文件夹、新建、发送到、打开方式、自定义文件格式、IE浏览器、WinX等右键菜单项目。对上述场景右键菜单项目进行修…

Springboot 配置使用 Elasticsearch

一、安装Elasticsearch 1、Windows安装 Windows安装比较简单&#xff0c;ES官网Download Elasticsearch | Elastic下载压缩包&#xff0c;解压出来&#xff0c; bin 目录下有个elasticsearch.bat&#xff0c;双击&#xff0c;就运行起来了。 然后在浏览器输入localhost:9200…

css篇---分辨率物理像素和逻辑像素

物理分辨率和逻辑分辨率 物理分辨率是生产屏幕时就固定的&#xff0c;它是不可改变的 -----电脑像素 逻辑分辨率是由软件决定的 【电脑的设置中可以修改分辨率】----css像素 设备像素比 dpr同一方向上的物理像素/css像素 &#xff08;缩放比是1的情况&#xff09; 假设dpr4/…

Redis篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、Memcache 与 Redis 的区别都有哪些?二、Redis 是单进程单线程的?三、一个字符串类型的值能存储最大容量是多少?四、Redis持久化机制前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点…