[results] display results as table

This commit is contained in:
Jan Grewe 2021-03-06 14:05:26 +01:00
parent 0b8db76f53
commit 3bdfcecf1a

View File

@ -1,19 +1,63 @@
from PyQt5.QtWidgets import QComboBox, QFrame, QGroupBox, QHBoxLayout, QLabel, QSplitter, QTextEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import QItemSelectionModel, Qt
from PyQt5.QtGui import QFont, QKeySequence
from PyQt5.QtWidgets import QAction, QComboBox, QFrame, QGroupBox, QHBoxLayout, QLabel, QSplitter, QStackedLayout, QTableWidget, QTableWidgetItem, QTextEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import QItemSelectionModel, Qt, reset, pyqtSignal
import blipblop.constants as cnst
from blipblop.util.results import MeasurementResults
class ResultsScreen(QWidget):
back_signal = pyqtSignal()
def __init__(self, parent=None) -> None:
super().__init__(parent=parent)
vbox = QVBoxLayout()
self.setLayout(vbox)
self.table = QTableWidget()
self._stack = QStackedLayout(self)
label = QLabel("There are no results to show\n(press ESC to go back)")
label.setAlignment(Qt.AlignCenter)
font = QFont()
font.setBold(True)
font.setPointSize(25)
label.setStyleSheet("color: #2D4B9A")
label.setFont(font)
self._stack.addWidget(label) # 0
self._stack.addWidget(self.table) # 1
self.setLayout(self._stack)
self._back_action = QAction("back")
self._back_action.setShortcut(QKeySequence("escape"))
self._back_action.triggered.connect(self.on_back)
self.addAction(self._back_action)
def set_results(self, measurement_results):
if len(measurement_results) == 0:
return
for mr in measurement_results:
if not isinstance(mr, MeasurementResults):
print("Some result entries are no MeasurementResults!")
return
main_splitter = QSplitter(Qt.Vertical)
self.layout().addWidget(main_splitter)
row_count = max([len(r.results) for r in measurement_results])
col_count = len(measurement_results)
self.table.setRowCount(row_count)
self.table.setColumnCount(col_count)
for col, mr in enumerate(measurement_results):
headerItem = QTableWidgetItem(cnst.get_icon("visual_task") if "visual" in mr.name.lower() else cnst.get_icon("auditory_task"), "")
headerItem.setToolTip("%s started at\n %s " % (mr.name, mr.starttime))
self.table.setHorizontalHeaderItem(col, headerItem)
for row, r in enumerate(mr.results):
item = QTableWidgetItem(str(r))
self.table.setItem(row, col, item)
self._stack.setCurrentIndex(1)
def on_back(self):
self.back_signal.emit()
def reset(self):
pass
self.table.clear()
self._stack.setCurrentIndex(0)