diff --git a/PyQtGraph/Data/graphAnalysis.py b/PyQtGraph/Data/graphAnalysis.py new file mode 100644 index 0000000..6743853 --- /dev/null +++ b/PyQtGraph/Data/graphAnalysis.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'graphAnalysis.ui' +# +# Created by: PyQt5 UI code generator 5.11.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + +class graph_Form(object): + def setupUi(self, Form): + Form.setObjectName("Form") + Form.resize(1024, 768) + self.gridLayout_3 = QtWidgets.QGridLayout(Form) + self.gridLayout_3.setContentsMargins(20, 20, 20, 20) + self.gridLayout_3.setSpacing(20) + self.gridLayout_3.setObjectName("gridLayout_3") + self.pushButton_7 = QtWidgets.QPushButton(Form) + self.pushButton_7.setMinimumSize(QtCore.QSize(0, 80)) + font = QtGui.QFont() + font.setPointSize(15) + self.pushButton_7.setFont(font) + self.pushButton_7.setObjectName("pushButton_7") + self.gridLayout_3.addWidget(self.pushButton_7, 2, 2, 1, 2) + self.label = QtWidgets.QLabel(Form) + font = QtGui.QFont() + font.setPointSize(15) + self.label.setFont(font) + self.label.setAlignment(QtCore.Qt.AlignCenter) + self.label.setObjectName("label") + self.gridLayout_3.addWidget(self.label, 0, 0, 1, 4) + self.tabWidget = QtWidgets.QTabWidget(Form) + self.tabWidget.setObjectName("tabWidget") + self.tab = QtWidgets.QWidget() + self.tab.setObjectName("tab") + self.tabWidget.addTab(self.tab, "") + self.tab_2 = QtWidgets.QWidget() + self.tab_2.setObjectName("tab_2") + self.tabWidget.addTab(self.tab_2, "") + self.gridLayout_3.addWidget(self.tabWidget, 1, 1, 1, 4) + + self.retranslateUi(Form) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + _translate = QtCore.QCoreApplication.translate + Form.setWindowTitle(_translate("Form", "Form")) + self.pushButton_7.setText(_translate("Form", "分析")) + self.label.setText(_translate("Form", "图形分析")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "折线图")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "Tab 2")) + diff --git a/PyQtGraph/Data/graphAnalysis.ui b/PyQtGraph/Data/graphAnalysis.ui new file mode 100644 index 0000000..627d66b --- /dev/null +++ b/PyQtGraph/Data/graphAnalysis.ui @@ -0,0 +1,83 @@ + + + Form + + + + 0 + 0 + 1024 + 768 + + + + Form + + + + 20 + + + 20 + + + 20 + + + 20 + + + 20 + + + + + + 0 + 80 + + + + + 15 + + + + 分析 + + + + + + + + 15 + + + + 图形分析 + + + Qt::AlignCenter + + + + + + + + 折线图 + + + + + Tab 2 + + + + + + + + + diff --git a/PyQtGraph/README.md b/PyQtGraph/README.md index 631757f..ef38e09 100644 --- a/PyQtGraph/README.md +++ b/PyQtGraph/README.md @@ -27,5 +27,10 @@ ![mouseFlow](ScreenShot/function.gif) -## 2、不用修改源码,重加载,解决右键保存图片异常;解决自定义坐标轴密集显示;禁止鼠标事件; -[加载 tools.py](tools.py) \ No newline at end of file +## 3、不用修改源码,重加载,解决右键保存图片异常;解决自定义坐标轴密集显示;禁止鼠标事件; +[加载 tools.py](tools.py) + +## 4、QScrollArea添加和修改大小例子; +[运行 testGraphAnalysis.py](testGraphAnalysis.py) + +![testGraphAnalysis](ScreenShot/GraphAnalysis.gif) diff --git a/PyQtGraph/ScreenShot/GraphAnalysis.gif b/PyQtGraph/ScreenShot/GraphAnalysis.gif new file mode 100644 index 0000000..006265e Binary files /dev/null and b/PyQtGraph/ScreenShot/GraphAnalysis.gif differ diff --git a/PyQtGraph/testGraphAnalysis.py b/PyQtGraph/testGraphAnalysis.py new file mode 100644 index 0000000..7cdbb0b --- /dev/null +++ b/PyQtGraph/testGraphAnalysis.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python +# encoding: utf-8 +''' +Created on 2019年8月17日 +@author: weike32 +@site: https://pyqt5.com ,https://github.com/weike32 +@email: 394967319@qq.com +@file: CopyContent +@description: +''' +import sys +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QDialog, QApplication, QWidget +from qtpy import QtWidgets +import pyqtgraph as pg + +from PyQtGraph.Data.graphAnalysis import graph_Form + + +class CustomViewBox(pg.ViewBox): + def __init__(self, *args, **kwds): + pg.ViewBox.__init__(self, *args, **kwds) + self.RectMode = 3 + self.setMouseMode(self.RectMode) + + def mouseClickEvent(self, ev): + if ev.button() == pg.QtCore.Qt.RightButton: + self.autoRange() + def mouseDragEvent(self, ev): + pg.ViewBox.mouseDragEvent(self, ev) + def wheelEvent(self,ev,axis=None): + ev.ignore() + +class graphAnalysis(QDialog,graph_Form): + def __init__(self): + super(graphAnalysis, self).__init__() + self.setupUi(self) + self.pushButton_7.clicked.connect(self.test) + self.tabWidget.clear() + + def handleChanged(self,item,column): + count = item.childCount() + if item.checkState(column) == Qt.Checked: + for index in range(count): + item.child(index).setCheckState(0,Qt.Checked) + if item.checkState(column) == Qt.Unchecked: + for index in range(count): + item.child(index).setCheckState(0,Qt.Unchecked) + + def test(self): + + tab1 = QtWidgets.QWidget() + scrollArea = QtWidgets.QScrollArea(tab1) + scrollArea.setMinimumSize(650,550) + scrollArea.setWidgetResizable(True) + + labelsContainer = QWidget() + labelsContainer.setMinimumSize(0,3000+200) + scrollArea.setWidget(labelsContainer) + layout = QtWidgets.QVBoxLayout(labelsContainer) + + time = ['2019-04-20 08:09:00', '2019-04-20 08:09:00', '2019-04-20 08:09:00', '2019-04-20 08:09:00'] + value = [1.2, 2, 1, 4] + xdict = dict(enumerate(time)) + ticks = [list(zip(range(4), tuple(time)))] + for i in range(11): + vb1 = CustomViewBox() + plt1 = pg.PlotWidget(title="Basic array plotting%s"%i, viewBox=vb1) + plt1.resize(500, 500) + plt1.setBackground(background=None) + plt1.plot(list(xdict.keys()), value) + plt1.getPlotItem().getAxis("bottom").setTicks(ticks) + temp1 = QtWidgets.QWidget() + temp1.setMinimumSize(600, 300) + temp1.setMaximumSize(600, 300) + layout2 = QtWidgets.QVBoxLayout(temp1) + layout2.addWidget(plt1) + layout.addWidget(temp1) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + layout.addItem(spacerItem) + # print(layout.count()) + self.tabWidget.addTab(tab1, '12') + for i in range(self.tabWidget.count()): + self.tabWidget.widget(i) + +if __name__ =="__main__": + app = QApplication(sys.argv) + w = graphAnalysis() + w.show() + sys.exit(app.exec_()) \ No newline at end of file diff --git a/README.md b/README.md index 85a8421..b8eb216 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,7 @@ https://pyqt5.com 社区是专门针对PyQt5学习和提升开设的博客网站 - [鼠标获取X轴坐标](PyQtGraph/mouseFlow.py) - [禁止右键点击功能、鼠标滚轮,添加滚动条等功能](PyQtGraph/graph1.py) - [工具类](PyQtGraph/tools.py) + - [滚动区相关](PyQtGraph/testGraphAnalysis.py) - [Animation](QPropertyAnimation) - [窗口淡入淡出](QPropertyAnimation/FadeInOut.py)