-
Notifications
You must be signed in to change notification settings - Fork 0
/
gui.py
92 lines (76 loc) · 2.33 KB
/
gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from PySide2.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QGridLayout, QLabel, QMainWindow, QTabWidget, QLineEdit
from PySide2.QtCore import QTimer
import pyqtgraph as pg
from pyqtgraph import PlotWidget, plot
from PySide2.QtGui import QFont
import sys, os
from random import randint
# Create Application
app = QApplication([])
appFont = QFont()
appFont.setPointSize(15)
# first page layou
tab1 = QWidget()
x = [0,1,2,3,4] # x points
y = [0,1,2,3,4] # y points
graph = pg.PlotWidget()
graph.enableMouse(False)
graph.setTitle("Data From CSV")
graph.setBackground((255,255,255))
graph.addLegend()
graph.showGrid(x = True, y = True)
graph.setLabel("bottom", "Column 1")
graph.setLabel("left", "Column 2")
pen = pg.mkPen(color=(0,0,255)) #blue line
line = graph.plot(x, y, pen = pen)
line.setData(x, y)
tab1Layout = QGridLayout()
tab1Layout.columnCount = 2
tab1Layout.rowCount = 2
tab1Layout.setColumnStretch(0, 2)
tab1Layout.setColumnStretch(1, 1)
fileLocation = QLineEdit()
fileLocation.setPlaceholderText("CSV File Location")
openFileButton = QPushButton("Open File")
errorOutput = QLabel("")
fileOpenLayout = QVBoxLayout()
fileOpenLayout.addWidget(fileLocation)
fileOpenLayout.addWidget(errorOutput)
fileOpenLayout.addWidget(openFileButton)
tab1Layout.addWidget(graph, 0, 0)
tab1Layout.addLayout(fileOpenLayout, 0, 1)
tab1.setLayout(tab1Layout)
# Setup Tabs
tabs = QTabWidget()
tabs.setTabPosition(QTabWidget.North)
tab2 = QWidget()
tab3 = QWidget()
tabs.addTab(tab1, "Tab 1")
tabs.addTab(tab2, "Tab 2")
tabs.addTab(tab3, "Tab 3")
# add data to graph
def PlotCSV():
global graph
global line
errorOutput.setText("")
graph.getPlotItem().clear()
x.clear()
y.clear()
try:
csv = open(fileLocation.text(), 'r') #open csv for reading
pairs = csv.read().splitlines()
for pair in pairs:
x.append(float(pair.split(',')[0]))
y.append(float(pair.split(',')[1]))
line = graph.plot(x, y, pen = pen)
except FileNotFoundError:
errorOutput.setText(fileLocation.text() + " Not Found (Try sine.csv)")
def ClearPlot():
graph.getPlotItem().clear()
openFileButton.released.connect(PlotCSV) #Plot is updated from csv file when this button is released
# Window Setup
win = QMainWindow()
win.setCentralWidget(tabs)
win.resize(800, 480)
win.show()
sys.exit (app.exec_())