Pyside6绘制折线图并计算面积

Pyside6绘制折线图并计算面积
在这里插入图片描述

import sys
import random
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QMainWindow
from PySide6.QtCore import Qt, QRectF, QPointF, Signal
from PySide6.QtGui import QPainter, QPen, QColor, QMouseEventclass PlotArea(QWidget):area_calculated = Signal(float)  # 定义一个信号,用于传递计算的面积def __init__(self, parent=None):super().__init__(parent)self.data = [random.random() * 100 for _ in range(100)]  # 生成随机数据self.start_index = Noneself.end_index = Nonedef paintEvent(self, event):painter = QPainter(self)painter.setRenderHint(QPainter.Antialiasing)painter.fillRect(event.rect(), Qt.white)# 绘制折线图pen = QPen(QColor(0, 0, 255))painter.setPen(pen)last_point = Nonefor i, value in enumerate(self.data):x = i * (self.width() / len(self.data))y = self.height() - (value * (self.height() / 100))point = QPointF(x, y)if last_point:painter.drawLine(last_point, point)last_point = point# 绘制选中区域if self.start_index is not None and self.end_index is not None:start_x = self.start_index * (self.width() / len(self.data))end_x = self.end_index * (self.width() / len(self.data))rect = QRectF(start_x, 0, end_x - start_x, self.height())painter.fillRect(rect, QColor(255, 0, 0, 50))def mousePressEvent(self, event: QMouseEvent):if event.button() == Qt.LeftButton:x = int(event.x() / (self.width() / len(self.data)))self.start_index = xself.end_index = xself.update()def mouseMoveEvent(self, event: QMouseEvent):if event.buttons() & Qt.LeftButton:x = int(event.x() / (self.width() / len(self.data)))self.end_index = xself.update()def mouseReleaseEvent(self, event: QMouseEvent):if event.button() == Qt.LeftButton:if self.start_index is not None and self.end_index is not None:if self.start_index > self.end_index:self.start_index, self.end_index = self.end_index, self.start_indexarea = self.calculate_area(self.start_index, self.end_index)self.area_calculated.emit(area)self.start_index = Noneself.end_index = Nonedef calculate_area(self, start, end):total_area = 0for i in range(start, end + 1):height = self.data[i]width = self.width() / len(self.data)total_area += height * width / 100return total_areaclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.plot_area = PlotArea(self)self.setCentralWidget(self.plot_area)self.plot_area.area_calculated.connect(self.show_area)# 主窗口大小为300x200self.setGeometry(600, 400, 500, 200)def show_area(self, area):print(f"Selected area under the curve: {area}")if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec())

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

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

相关文章

微服务分布式事务

1、分布式事务是什么? 微服务架构中的分布式事务是指在多个服务实例之间保持数据一致性的机制。由于微服务通常涉及将业务逻辑拆分成独立的服务,每个服务可能有自己的数据库,因此当一个业务操作需要跨多个服务进行时,确保所有服务…

【知识】PyTorch种两种CUDA时间测量的方法对比

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 在PyTorch中使用CUDA进行时间测量时,以下两者各有优缺点: torch.cuda.current_stream(self._device).synchronize() torch.cud…

泰迪智能科技携广州华商学院共讨产教融合,校企合作

7月19日,广州华商学院人工智能学院的领导及骨干教师一行莅临泰迪智能科技参观交流,广州华商学院人工智能学院院长助理杨本胜、院长助理洪绍勇、大数据系主任颜远海、金融数学系主任石金诚、人工智能系主任霍永良,以及骨干教师许丽娟、李志青、…

恐怖数字暗影:猜中才能逃离

大家可以看看这个,也很有意思! 猜数字游戏(老六版)-CSDN博客 1、 剧情介绍 在一个阴暗潮湿的古堡中,你独自一人走进了一间散发着诡异气息的房间。房间的正中央有一张古老的桌子,上面放着一本泛黄的羊皮卷…

2024-07-22 Unity AI行为树1 —— 框架介绍

文章目录 1 行为树2 行为树驱动方式3 行为树结点分类3.1 控制节点3.2 执行节点 4 行为树与状态机比较 本文章参考 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 行为树 ​ 行为树(Behavior Tree,BT)在游戏 AI 中是一种用于控制…

【git】git 提交修改报错 ERROR: do not set execute permissions for source files

目录 问题报错信息解决方法 问题 修改文件后,使用git 提交修改到gerrit时报错:ERROR: do not set execute permissions for source files 文件修改前 $ll deinterlace_mtn.c -rw-r--r-- 1 xxx users 31599 Jul 22 08:10 deinterlace_mtn.c文件修改后…

前端JS特效第49波:简洁时尚的jQuery和CSS3侧边栏菜单插件

简洁时尚的jQuery和CSS3侧边栏菜单插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" c…

mysql高阶语句:

mysql高阶语句&#xff1a; 高级语法的查询语句&#xff1a; select * from 表名 where limitsdistinct 去重查询like 模糊查询 排序语法&#xff1a;关键字排序 升序和降序 默认的排序方式就是升序 升序&#xff1a;ASC 配合order by语法 select * from 表名…

QT写一个mainWindow

切换风格的写法&#xff1a; 先看看样式效果&#xff1a; mian_window.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();void Ini…

SQL123 SQL类别高难度试卷得分的截断平均值

题目 自测代码 drop table if exists examination_info; CREATE TABLE examination_info (id int PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,exam_id int UNIQUE NOT NULL COMMENT 试卷ID,tag varchar(32) COMMENT 类别标签,difficulty varchar(8) COMMENT 难度,duration i…

机器学习驱动的智能化电池管理技术与应用

在人工智能与电池管理技术融合的背景下&#xff0c;电池科技的研究和应用正迅速发展&#xff0c;创新解决方案层出不穷。从电池性能的精确评估到复杂电池系统的智能监控&#xff0c;从数据驱动的故障诊断到电池寿命的预测优化&#xff0c;人工智能技术正以其强大的数据处理能力…

数据结构之树的存储结构详解与示例(C/C++)

文章目录 树的存储结构1. 顺序存储结构2. 链式存储结构结论 树&#xff08;Tree&#xff09;是一种非常常见的数据结构&#xff0c;它模拟了一种层级或分支结构。树由节点&#xff08;或称为顶点&#xff09;组成&#xff0c;每个节点包含一个值&#xff0c;并且可能有多个子节…

《500 Lines or Less》(5)异步爬虫

https://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html ——A. Jesse Jiryu Davis and Guido van Rossum 介绍 网络程序消耗的不是计算资源&#xff0c;而是打开许多缓慢的连接&#xff0c;解决此问题的现代方法是异步IO。 本章介绍一个简单的网络爬虫&a…

使用Python和Pandas导出SQLite数据到Excel的小工具

在数据处理和导出的日常工作中&#xff0c;有时我们需要将SQLite数据库中的数据导出到Excel文件以便进一步分析或分享。本文将介绍如何使用Python的wxPython、Pandas和SQLite3库创建一个小工具&#xff0c;实现从SQLite数据库中提取数据并将其导出到Excel文件的功能。 C:\pytho…

5.Fabric的共识机制

在Fabric中,有以下3中典型共识机制。 Solo共识 solo共识机制只能用于单节点模式,即只能有一个Orderer节点,因此,其共识过程很简单,每接收到一个交易信息,就在共识模块的控制下产生区块并广播给节点存储到账本中。 Solo 模式下的共识只适用于一个Orderer节点,所以可以在…

汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法

汉明权重&#xff08;Hamming Weight&#xff09;&#xff08;统计数据中1的个数&#xff09;VP-SWAR算法 定义 汉明重量是一串符号中非零符号的个数。它等于同样长度的全零符号串的汉明距离(在信息论中&#xff0c;两个等长字符串之间的汉明距离等于两个字符串对应位置的不同…

无线麦克风推荐哪些品牌,领夹麦克风哪个品牌好,无线麦克风推荐

​作为消费类电子产品&#xff0c;麦克风随着市场需求和技术进步&#xff0c;每年都有新产品系列涌现&#xff0c;特别是领夹麦克风&#xff0c;近年来经历了显著的市场变革和技术突破。从早期的新闻采访、节目录制和影视后期录音中常用的无线小蜜蜂话筒&#xff0c;到如今在网…

【保姆级讲解C语言中的运算符的优先级!】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

创建最佳实践创建 XML 站点地图--SEO

您是否正在努力让您的网站被搜索引擎索引&#xff1f;您想提高您网站的搜索引擎知名度吗&#xff1f;如果是&#xff0c;您可能会错过 XML 站点地图的重要性。XML 站点地图在改善您网站的 SEO 方面发挥着至关重要的作用。‍ XML 站点地图是您网站结构的蓝图&#xff0c;可帮助…

RH436 Managing LVM Shared Volume Groups

RH436 Managing LVM Shared Volume Groups 1. 启动lab环境2. 准备lvm卷组3. 创建逻辑卷4. 配置集群资源启动顺序5. 确认各节点lvs正常6. LVM-HA和LVM-Share使用场景 1. 启动lab环境 [studentworkstation ~]$ lab start lvm-shared2. 准备lvm卷组 所有节点安装依赖包 yum ins…