dev: добавил возможность выбирать выводимую производительность и совмещать их
This commit is contained in:
parent
bd3ca92171
commit
74b65eee5d
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -202,11 +202,12 @@ class MainWindow(BaseMainWindow):
|
||||
|
||||
def show_plot_tabs(self, plot_widgets: list[QtWidgets.QWidget]) -> None:
|
||||
for plot_widget in plot_widgets:
|
||||
widget, reg_items, curve_items = plot_widget
|
||||
widget, reg_items, curve_items, qt_items = plot_widget
|
||||
|
||||
tab = QtWidgets.QWidget()
|
||||
tab.setProperty("reg_items", reg_items)
|
||||
tab.setProperty("curve_items", curve_items)
|
||||
tab.setProperty("qt_items", qt_items)
|
||||
grid = QtWidgets.QGridLayout()
|
||||
grid.addWidget(widget)
|
||||
tab.setLayout(grid)
|
||||
@ -259,7 +260,8 @@ class MainWindow(BaseMainWindow):
|
||||
if tab is not None and self.report_dock.isVisible():
|
||||
reg_items = tab.property("reg_items")
|
||||
curve_items = tab.property("curve_items")
|
||||
self.repSettings.build(index, reg_items, curve_items)
|
||||
qt_items = tab.property("qt_items")
|
||||
self.repSettings.build(index, reg_items, curve_items, qt_items)
|
||||
|
||||
def _save_plots(self) -> None:
|
||||
filepath, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Save file", "", "Image Files (*.png *.jpeg)")
|
||||
|
||||
@ -1,4 +1,9 @@
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QGraphicsRectItem
|
||||
from PyQt5.QtWidgets import (QWidget, QVBoxLayout,
|
||||
QHBoxLayout, QLabel,
|
||||
QGraphicsRectItem, QSpacerItem,
|
||||
QSizePolicy)
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
import copy
|
||||
import traceback
|
||||
import sys
|
||||
@ -144,7 +149,8 @@ class PlotWidget(BasePlotWidget):
|
||||
layout: QVBoxLayout,
|
||||
TWC_time: float,
|
||||
ideal_time: float,
|
||||
tesla_time: float) -> None:
|
||||
tesla_time: float,
|
||||
qt_items: dict) -> None:
|
||||
"""
|
||||
Добавляет QLabel с информацией о производительности.
|
||||
"""
|
||||
@ -152,13 +158,27 @@ class PlotWidget(BasePlotWidget):
|
||||
tesla_ideal = round((1 - ideal_time/tesla_time)*100, 2) if tesla_time else 0.0
|
||||
TWC_ideal = round((ideal_time/TWC_time)*100, 2) if TWC_time else 0.0
|
||||
|
||||
performance_label = QLabel(
|
||||
f"Сокращение длительности: фактическое = {tesla_TWC} %"
|
||||
)
|
||||
#f"идеальное = {tesla_ideal} %; КДИП = {TWC_ideal}%"
|
||||
self.set_style(performance_label)
|
||||
layout.addWidget(performance_label)
|
||||
performance_label.update()
|
||||
label_widget = QWidget()
|
||||
label_layout = QHBoxLayout(label_widget)
|
||||
start_label = QLabel("Сокращение длительности: ")
|
||||
real_label = QLabel(f"фактическое = {tesla_TWC} % ")
|
||||
ideal_label = QLabel(f"идеальное = {tesla_ideal} % ")
|
||||
kdip_label = QLabel(f"КДИП = {TWC_ideal}% ")
|
||||
label_layout.addWidget(start_label, alignment=Qt.AlignLeft)
|
||||
label_layout.addWidget(real_label, alignment=Qt.AlignLeft)
|
||||
label_layout.addWidget(ideal_label, alignment=Qt.AlignLeft)
|
||||
label_layout.addWidget(kdip_label, alignment=Qt.AlignLeft)
|
||||
spacer = QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Minimum)
|
||||
label_layout.addSpacerItem(spacer)
|
||||
|
||||
self.set_style(label_widget)
|
||||
layout.addWidget(label_widget)
|
||||
|
||||
qt_items["performance label"] = label_widget
|
||||
qt_items["real performance"] = real_label
|
||||
qt_items["ideal performance"] = ideal_label
|
||||
qt_items["real to ideal performance"] = kdip_label
|
||||
|
||||
|
||||
def _build_widget(self, data: list[Any]) -> QWidget:
|
||||
"""
|
||||
@ -170,6 +190,7 @@ class PlotWidget(BasePlotWidget):
|
||||
plot_layout = pg.GraphicsLayoutWidget()
|
||||
reg_items = {"real":{}, "ideal":{}}
|
||||
curve_items = {"real":{}, "ideal":{}}
|
||||
qt_items = {}
|
||||
|
||||
dataframe, points_pocket, useful_data = data
|
||||
tesla_time = useful_data["tesla_time"]
|
||||
@ -288,7 +309,7 @@ class PlotWidget(BasePlotWidget):
|
||||
plot_item.setXLink(main_plot)
|
||||
|
||||
if settings["performance"] and not dat_is_none:
|
||||
self._add_performance_label(result_layout, TWC_time, ideal_time, tesla_time)
|
||||
self._add_performance_label(result_layout, TWC_time, ideal_time, tesla_time, qt_items)
|
||||
|
||||
plot_layout.addItem(plot_item, widget_num, 0)
|
||||
|
||||
@ -299,7 +320,7 @@ class PlotWidget(BasePlotWidget):
|
||||
main_plot.sigXRangeChanged.connect(lambda _, plot=main_plot, region=ROI_region: self._sync_navigator_with_main(main_plot=plot, region=region))
|
||||
|
||||
result_layout.addWidget(plot_layout)
|
||||
return result_widget, reg_items, curve_items
|
||||
return result_widget, reg_items, curve_items, qt_items
|
||||
|
||||
def build(self, data: list[list[Any]]) -> None:
|
||||
"""
|
||||
|
||||
@ -13,7 +13,7 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
super().__init__(parent)
|
||||
#self._tab_cashe = LRUCache(maxsize=1000)
|
||||
|
||||
def build(self, index, reg_items: dict, curve_items: dict) -> None:
|
||||
def build(self, index, reg_items: dict, curve_items: dict, qt_items: dict) -> None:
|
||||
"""Создает ParameterTree для элементов всех графиков выбранной вкладки"""
|
||||
try:
|
||||
self._clear()
|
||||
@ -30,12 +30,13 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
self._tab_cashe[index] = body"""
|
||||
body= [
|
||||
self._generate_reg_params(reg_items),
|
||||
self._generate_curve_params(curve_items)
|
||||
self._generate_curve_params(curve_items),
|
||||
self._generate_qt_params(qt_items)
|
||||
]
|
||||
# Добавляем параметры в дерево
|
||||
params = Parameter.create(name='params', type='group', children=body)
|
||||
params.sigTreeStateChanged.connect(
|
||||
lambda: self._update_settings(reg_items, curve_items, params)
|
||||
lambda: self._update_settings(reg_items, curve_items, qt_items, params)
|
||||
)
|
||||
param_tree.setParameters(params, showTop=False)
|
||||
except:
|
||||
@ -58,6 +59,19 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
else:
|
||||
self.setLayout(QtWidgets.QVBoxLayout())
|
||||
|
||||
def _generate_qt_params(self, qt_items: dict) -> dict:
|
||||
"""Создает qt элементы"""
|
||||
res = {'name': 'Qt elements', 'type': 'group', 'children':[
|
||||
{'name': key, 'type': 'group', 'children': self._create_qt_samples(item)} for key, item in qt_items.items()
|
||||
]}
|
||||
return res
|
||||
|
||||
def _create_qt_samples(self, item: Union[QtWidgets.QWidget, QtWidgets.QLabel]) -> dict:
|
||||
visibility = item.isVisible()
|
||||
return [
|
||||
{'name': 'Visibility', 'type': 'bool', 'value': visibility}
|
||||
]
|
||||
|
||||
def _generate_reg_params(self,
|
||||
reg_items: dict) -> dict:
|
||||
|
||||
@ -129,6 +143,7 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
def _update_settings(self,
|
||||
reg_items: dict,
|
||||
curve_items: dict,
|
||||
qt_items: dict,
|
||||
params: Parameter) -> None:
|
||||
|
||||
"""Задает параметры элементов в соответствии с paramTree"""
|
||||
@ -139,6 +154,8 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
real_plots = params.child("Plots").child("Real plots")
|
||||
ideal_plots = params.child("Plots").child("Ideal plots")
|
||||
|
||||
qt_settings = params.child("Qt elements")
|
||||
|
||||
self._set_sector_settings(reg_items["real"], real_sectors)
|
||||
self._set_sector_settings(reg_items["ideal"], ideal_sectors)
|
||||
|
||||
@ -146,6 +163,8 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
for key, item_dict in curve_items["ideal"].items():
|
||||
self._set_plot_settings(item_dict, ideal_plots.child(key))
|
||||
|
||||
self._set_qt_settings(qt_items, qt_settings)
|
||||
|
||||
def _set_sector_settings(self,
|
||||
sectors: dict,
|
||||
settings: Parameter) -> None:
|
||||
@ -168,7 +187,7 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
reg.setBrush(brush)
|
||||
|
||||
def _set_plot_settings(self,
|
||||
curves:dict,
|
||||
curves: dict,
|
||||
settings: Parameter) -> None:
|
||||
|
||||
"""Задает параметры кривых в соответствии с настройками"""
|
||||
@ -186,3 +205,14 @@ class ReportSettings(QtWidgets.QWidget):
|
||||
else:
|
||||
item.setVisible(visibility)
|
||||
item.setPen(pen)
|
||||
|
||||
def _set_qt_settings(self,
|
||||
qt_items: dict,
|
||||
settings: Parameter) -> None:
|
||||
|
||||
"""Задает параметры Qt элементов в соответствии с настройками"""
|
||||
|
||||
for key, item in qt_items.items():
|
||||
sample = settings.child(key)
|
||||
visibility = sample.child("Visibility").value()
|
||||
item.setVisible(visibility)
|
||||
Loading…
Reference in New Issue
Block a user