'''
@Description: 测试公司软件模板
@Author: JYS
@EMAIL: 18010181191@163.COM
@Date: 2020-04-21 16:43:21
@LastEditors: JYS
@LastEditTime: 2020-07-08 18:29:39
'''
import math
import threading
import time
from PyQt5.QtCore import QTimer, QMargins, QPointF, QPoint, QDateTime
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolTip
from PyQt5.QtGui import QBrush, QPen, QFont, QColor, QCursor, QPixmap
from PyQt5.QtCore import Qt
from ui.Ui_mainwindow import Ui_MainWindow as ui
from QCustomPlot2 import QCustomPlot, QCPAxisTickerText, QCPAxisTickerDateTime, QCPScatterStyle, QCPTextElement, QCPLegend, QCPItemText, QCPItemPosition, QCPItemCurve, QCPLineEnding, QCPItemTracer, QCP
class MainWindow(QMainWindow, ui):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
# 初始化一个定时器
self.timer = QTimer(self)
# 定义时间超时连接start_app
self.timer.timeout.connect(self.upadta_ui)
# 定义时间任务是一次性任务
# self.timer.setSingleShot(True)
# 启动时间任务
self.timer.start(100)
self.init_ui()
self.init_connect()
self.init_data()
def init_ui(self):
"""
初始化界面
:return:
"""
# QIntValidator 整数 QDoubleValidator 浮点数显示 (最小值,最大值)
self.setWindowTitle("曲线测试")
self.init_chart()
def init_connect(self):
"""
初始化事件连接
:return:
"""
self.start.clicked.connect(self.moni_collect)
# self.btn_readdi.clicked.connect(self.ui_read_Di)
self.chart1.mouseMove.connect(self.chart_mousemove)
self.chart2.mouseMove.connect(self.chart_mousemove)
self.chart3.mouseMove.connect(self.chart_mousemove)
self.chart4.mouseMove.connect(self.chart_mousemove)
def init_data(self):
"""
初始化数据
"""
self.x_data = []
self.y_data = []
self.y_data2 = []
self.time_data = []
def init_chart(self):
"""
初始化曲线
:return:
"""
self.inin_chart1()
self.init_chart2()
self.init_chart3()
self.init_chart4()
def inin_chart1(self):
"""
初始化曲线1
:return:
"""
# 增加曲线
graph0 = self.chart1.addGraph()
graph1 = self.chart1.addGraph()
x, y0, y1 = [], [], []
for i in range(251):
x.append(i)
y0.append(math.exp(-i / 150.0) * math.cos(i / 10.0))
y1.append(math.exp(-i / 150.0)) # exponential envelope
graph0.setData(x, y0) # 设置数据
graph1.setData(x, y1) # 设置数据
# 根据范围自动缩放曲线
# self.chart1.rescaleAxes()
"""
手动设置量程
"""
self.chart1.xAxis.setRange(0, 250)
self.chart1.yAxis.setRange(-1, 1)
self.set_chart_style(self.chart1)
self.add_trace(self.chart1)
self.chart1.plotLayout().insertRow(0)
self.chart1.plotLayout().addElement(0, 0, QCPTextElement(
self.chart1, "更改背景 添加游标", QFont("sans", 12, QFont.Bold)))
def add_trace(self, chart):
"""
添加游标
:param chart:
:return:
"""
self.tracer = QCPItemTracer(chart)
self.tracer.setGraph(chart.graph(0))
# self.tracer.setGraphKey(50)# 初始坐标点
"""
tsCircle = 3 #⚪
tsCrosshair = 2 # 大十字
tsNone = 0
tsPlus = 1 十字
tsSquare = 4 方块
"""
self.tracer.setStyle(2)
self.tracer.setVisible(0)
def set_chart_style(self, chart):
"""
设置曲线样式
:param chart: 哪个曲线控件
:return:
"""
"""
设置x,y标签
"""
chart.xAxis.setLabel("点数")
chart.yAxis.setLabel("透明度")
chart.legend.setVisible(1)
# chart.xAxis.ticker().setTickCount(5)#设置自动标签数y
# chart.yAxis.ticker().setTickCount(2) # 设置自动标签数
# 网格线
chart.xAxis.grid().setVisible(1) # 网格线可见
chart.xAxis.grid().setPen(QPen(QColor(130, 130, 130), 0, Qt.SolidLine))
chart.yAxis.grid().setPen(QPen(QColor(130, 130, 130), 0, Qt.DotLine))
# 改变背景色
# self.chart1.setBackground(QBrush(Qt.darkCyan))
# 设定右上角图形标注的字体
chart.legend.setFont(QFont("宋体", 9))
# 设置画笔
chart.graph(0).setPen(QPen(Qt.red))
# 设置画刷,曲线和X轴围成面积的颜色
chart.graph(0).setBrush(QBrush(Qt.darkCyan))
chart.graph(0).setName("曲线1")
chart.graph(1).setName("曲线2")
# 是否显示刻度线
# chart.xAxis2.setVisible(1)
# # 是否显示刻度线文本
# chart.xAxis2.setTickLabels(0)
# chart.yAxis2.setVisible(1)
# chart.yAxis2.setTickLabels(0)
chart.axisRect().setupFullAxesBox()
"""
取消上轴和右轴的 小刻度
"""
chart.xAxis2.setSubTicks(0)
chart.yAxis2.setSubTicks(0)
chart.xAxis2.setTicks(0)
chart.yAxis2.setTicks(0)
"""
iRangeDrag = 1 # 缩放拖曳
iRangeZoom = 2 # 滚轮缩放
iSelectAxes = 16 #选择区域
iSelectItems = 64 # 选择items
iSelectLegend = 32 # 选择 图例
iSelectOther = 128
iSelectPlottables = 8 # 选择曲线
相加的数值放入chart.setInteraction
"""
chart.setInteraction(55)
chart.legend.setSelectableParts(QCPLegend.spItems)
chart.selectionChangedByUser.connect(self.legnd_choose)
chart.mousePress.connect(self.reply_chart)
# 设置点的样式
# chart.graph().setScatterStyle(QCPScatterStyle(QPixmap("logo.ico")))
def reply_chart(self, event):
"""
鼠标右键 曲线自动调节大小
:return:
"""
# 如果鼠标左键 返回 ==1 左键 ==2 右键
if event.button() == 1:
return
self.sender().rescaleAxes()
chart = self.sender()
for i in range(self.sender().graphCount()):
chart.graph(i).setVisible(1)
self.sender().replot()
def legnd_choose(self, tracerorgraph=1):
"""
图例选择
:return:
"""
chart = self.sender()
self.tracer.setVisible(0)
for i in range(self.sender().graphCount()):
item = chart.legend.itemWithPlottable(chart.graph(i))
if tracerorgraph:
if item.selected():
self.tracer.setGraph(self.sender().graph(i))
self.tracer.setVisible(1)
else:
chart.graph(i).setVisible(item.selected())
def init_chart2(self):
"""
初始化第二曲线
:return:
"""
self.chart2.addGraph()
self.chart2.addGraph()
# self.set_chart_style(self.chart2)
self.chart2.legend.setVisible(1)
# 填充两线之间
self.chart2.graph(0).setChannelFillGraph(self.chart2.graph(1))
self.chart2.plotLayout().insertRow(0)
self.chart2.plotLayout().addElement(0, 0, QCPTextElement(
self.chart2, "自动更新", QFont("sans", 12, QFont.Bold)))
def init_chart3(self):
"""
初始化第三曲线
:return:
"""
self.chart3.addGraph()
self.chart3.addGraph()
linxue110
- 粉丝: 224
- 资源: 1
最新资源
- 基于springboot的美妆神域源码(java毕业设计完整源码).zip
- 量子图像处理技术综述与进展
- matlab绘制普朗克曲线(含峰值点),波长和温度范围可调 便于直观理解普朗克公式
- 基于springboot的考务管理系统的设计与实现源码(java毕业设计完整源码).zip
- 基于springboot的考研互助平台源码(java毕业设计完整源码+LW).zip
- 图像处理在机器人与仪器仪表中的应用综述
- c语言复习题加答案,包含c语言基础语法的考察
- cadance 1.8v LDO电路 cadance virtuoso 设计 模拟电路设计 LDO带隙基准电路设计 带设计报告(14页word) 基于tsmc18工艺,模拟ic设计 bandgap+L
- 基于springboot的考研资讯系统源码(java毕业设计完整源码).zip
- 基于图像处理与机器学习的皮肤疾病检测方法
- 基于springboot的苏蔚家校互联管理系统源码(java毕业设计完整源码).zip
- Prius2004永磁同步电机设计报告: 磁路法、maxwell有限元法、MotorCAD温仿真、应力分析 (内容比较完善,用于很需要的朋友,不支持讲解,等额外服务哈 ) 内容:: 1.Excel
- c语言复习题,只要有题目,答案在前面的资源
- 基于springboot的英语学习平台源码(java毕业设计完整源码).zip
- form-diff-2
- 基于分数阶Atangana-Baleanu导数的图像去噪方法研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈