From f769eca8f9de0addb980859e4e8e833b9e0c4df6 Mon Sep 17 00:00:00 2001 From: JayPiKay Date: Tue, 21 Jan 2020 14:19:14 +0100 Subject: [PATCH] Graph mockup --- res/MainWindow.ui | 1510 +++++++++++++++++++++++++++++++++++++++++++++ src/um24clab.py | 132 +--- 2 files changed, 1543 insertions(+), 99 deletions(-) create mode 100644 res/MainWindow.ui diff --git a/res/MainWindow.ui b/res/MainWindow.ui new file mode 100644 index 0000000..f452982 --- /dev/null +++ b/res/MainWindow.ui @@ -0,0 +1,1510 @@ + + + MainWindow + + + + 0 + 0 + 1280 + 940 + + + + + 1280 + 940 + + + + MainWindow + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + Connect + + + false + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + 1 + + + + 0 + + + 0 + + + 0 + + + 9 + + + + + + 0 + 0 + + + + + 9 + + + 0 + + + + + + 0 + 0 + + + + + + + false + + + false + + + buttonGroup + + + + + + + + 0 + 0 + + + + + + + false + + + false + + + buttonGroup + + + + + + + + 0 + 0 + + + + + + + false + + + false + + + buttonGroup + + + + + + + + 0 + 0 + + + + + + + false + + + false + + + buttonGroup + + + + + + + + 0 + 0 + + + + + + + false + + + false + + + buttonGroup + + + + + + + + 0 + 0 + + + + + + + false + + + false + + + buttonGroup + + + + + + + + 0 + 0 + + + + + + + false + + + false + + + buttonGroup + + + + + + + + + + + 0 + 0 + + + + + 0 + + + 9 + + + 0 + + + + + + 0 + 0 + + + + Rotate Screen + + + + + + + Next Screen + + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Switch Group + + + + + + + Clear Data + + + + + + + + + + QAbstractItemView::NoEditTriggers + + + + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + + + 0 + + + + + + + + + 14 + + + + Voltage + + + + + + + + + + + 9 + + + 0 + + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 14 + + + + V + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 14 + + + + Current + + + + + + + + + + + 9 + + + 0 + + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 14 + + + + A + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 14 + + + + Power + + + + + + + + + + + 9 + + + 0 + + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 14 + + + + W + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 14 + + + + Impedance + + + + + + + + + + + 9 + + + 0 + + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 14 + + + + + + + + + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + + + 0 + + + + + + 0 + + + + + + 14 + + + + Capacity recorded + + + + + + + + + + + 0 + + + 0 + + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 14 + + + + mAh + + + + + + + + + + + + + + 0 + + + 0 + + + + + + 0 + + + + + + 14 + + + + Energy recorded + + + + + + + + + + + 0 + + + 0 + + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 14 + + + + mWh + + + + + + + + + + + + + + 0 + + + 0 + + + + + + 0 + + + + + + 14 + + + + Stop current + + + + + + + + + + + + + + 14 + + + + true + + + QAbstractSpinBox::PlusMinus + + + + + + 0.300000000000000 + + + 0.010000000000000 + + + 0.120000000000000 + + + + + + + + 0 + 0 + + + + + 14 + + + + A + + + + + + + + + + + + + + 0 + + + 0 + + + + + + 0 + + + + + + 14 + + + + Time recorded + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 16 + + + + 03:07:35 + + + Qt::AlignCenter + + + + + + + + + + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + + 14 + + + + Brightness level + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 14 + + + + 0 + + + 5 + + + 4 + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 1 + + + + + + + + + + + + + + 14 + + + + Auto screen off + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 14 + + + + 9 + + + Qt::Horizontal + + + QSlider::TicksBelow + + + 1 + + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 9 + + + 9 + + + 9 + + + 9 + + + + + + 14 + + + + USB D+ + + + + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 0 + 0 + + + + + 14 + + + + V + + + + + + + + + + + + + + 14 + + + + USB D- + + + + + + + + 10 + + + + QFrame::Raised + + + QLCDNumber::Flat + + + 2.020000000000000 + + + + + + + + 0 + 0 + + + + + 14 + + + + V + + + + + + + + + + QFrame::Box + + + QFrame::Raised + + + + + + + 14 + + + + Unkown mode + + + Qt::AlignCenter + + + + + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + + 0 + 0 + + + + + + + + 0 + 0 + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 0 + 0 + + + + + 14 + + + + °C + + + + + + + + + + + 0 + 0 + + + + 26 + + + Qt::Vertical + + + %p + + + + + + + + + + + + + + 0 + 0 + + + + + + + + 0 + 0 + + + + + 10 + + + + QLCDNumber::Flat + + + + + + + + 0 + 0 + + + + + 14 + + + + °F + + + + + + + + + + + 0 + 0 + + + + 200 + + + 79 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + Qt::Vertical + + + %p + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1280 + 20 + + + + + + + + + + + diff --git a/src/um24clab.py b/src/um24clab.py index 3251dab..49066d6 100644 --- a/src/um24clab.py +++ b/src/um24clab.py @@ -1,115 +1,49 @@ #!/usr/bin/env python import sys -from PyQt5.QtWidgets import ( - QApplication, QWidget, QMainWindow, QLabel, QFrame, QComboBox, QPushButton, - QButtonGroup, QRadioButton +from PySide2.QtWidgets import ( + QApplication, QMainWindow ) -import PyQt5.QtGui as QtGui -import pyqtgraph as pg +from PySide2.QtCharts import ( + QtCharts +) +from UM24CUI import Ui_MainWindow +import random class UM24Lab(QMainWindow): - def __init__(self, screen_width=1280, screen_height=1024): - super().__init__() - self.title = 'UM24C USB Meter Lab' - self.width = 800 - self.height = 600 - self.left = screen_width // 2 - self.width // 2 - self.top = screen_height // 2 - self.height // 2 - self.init_ui() + def __init__(self): + super(UM24Lab, self).__init__() + self.ui = Ui_MainWindow() + self.ui.setupUi(self) - def init_ui(self): - """ - Window Layout - +---------+-----------------------+ - |(1) |(3) | - | (1.1) | | - | (1.2) | PLOTS | - | | | - +---------+ | - |(2) +------+------+---------+ - | |(4) | | | - | | (4.1)| (4.2)|(4.3) | - | | | | | - | | | |---------| - | | | |(4.4) | - | | | | | - +---------+------+------+---------+ + self.ui.plotVoltage = QtCharts.QChart() + self.ui.widgetVoltage.setChart(self.ui.plotVoltage) - """ - self.setWindowTitle(self.title) - self.setGeometry(self.left, self.top, self.width, self.height) - self.statusBar().showMessage('Idle') + self.ui.plotCurrent = QtCharts.QChart() + self.ui.widgetCurrent.setChart(self.ui.plotCurrent) - centralWidget = QWidget() - centralLayout = QtGui.QHBoxLayout() - centralWidget.setLayout(centralLayout) + voltage = self.ui.plotVoltage + series = QtCharts.QLineSeries() + series.setName('Voltage') + for x in range(100): + y = random.randint(0, 10) + series.append(x, y) + voltage.addSeries(series) - # (1) Device Control - # (1.1) Device Management - deviceWidget = QWidget() - layout = QtGui.QHBoxLayout() - deviceWidget.setLayout(layout) - self.deviceSelect = QComboBox() - layout.addWidget(self.deviceSelect) - # TODO: Populate deviceSelect - self.btnDeviceConnect = QPushButton('Connect') - layout.addWidget(self.btnDeviceConnect) - centralLayout.addWidget(deviceWidget) - - # (1.2) Screen Control - screenWidget = QWidget() - layout = QtGui.QGridLayout() - screenWidget.setLayout(layout) - self.screenIndicator = QWidget() - screenManagementButtons = QButtonGroup() - group = QWidget() - groupLayout = QtGui.QHBoxLayout() - group.setLayout(groupLayout) - for i in range(7): - btn = QRadioButton() - screenManagementButtons.addButton(btn) - groupLayout.addWidget(btn) - layout.addWidget(group, 0, 0, 0, 1) - # TODO: Select initial screen - self.btnRotateScreen = QPushButton('Rotate') - layout.addWidget(self.btnRotateScreen, 1, 0) - self.btnNextPage = QPushButton('Next') - layout.addWidget(self.btnNextPage, 1, 1,) - centralLayout.addWidget(screenWidget) - - # TODO: Screen Timeout - - # (2) Group Memory - # TODO: List groups: Capacity (mAh) and Energy (mWh) - - # (3) Plots - plotWidget = QWidget() - layout = QtGui.QHBoxLayout() - plotWidget.setLayout(layout) - self.plotVoltage = pg.PlotWidget() - self.plotCurrent = pg.PlotWidget() - layout.addWidget(self.plotCurrent) - layout.addWidget(self.plotVoltage) - centralLayout.addWidget(plotWidget) - - # (4) Current Measurement - # TODO: (4.1) Voltage, Current, Power, Impedance - # TODO: (4.2) Recorder - # TODO: (4.3) USB D+/D-, Mode - # TODO: (4.4) Temperature (°C, °F) - - self.setCentralWidget(centralWidget) - self.show() - - def slot_connect_device(self): - self.statusBar().showMessage('Connecting...') - # TODO: connect to UM24C + current = self.ui.plotCurrent + series = QtCharts.QLineSeries() + series.setName('Current') + for x in range(100): + y = random.randint(0, 10) + series.append(x, y) + current.addSeries(series) if __name__ == '__main__': app = QApplication(sys.argv) - screen_resolution = app.desktop().screenGeometry() - labview = UM24Lab(screen_resolution.width(), screen_resolution.height()) + + labview = UM24Lab() + labview.show() + sys.exit(app.exec_())