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:
|
def show_plot_tabs(self, plot_widgets: list[QtWidgets.QWidget]) -> None:
|
||||||
for plot_widget in plot_widgets:
|
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 = QtWidgets.QWidget()
|
||||||
tab.setProperty("reg_items", reg_items)
|
tab.setProperty("reg_items", reg_items)
|
||||||
tab.setProperty("curve_items", curve_items)
|
tab.setProperty("curve_items", curve_items)
|
||||||
|
tab.setProperty("qt_items", qt_items)
|
||||||
grid = QtWidgets.QGridLayout()
|
grid = QtWidgets.QGridLayout()
|
||||||
grid.addWidget(widget)
|
grid.addWidget(widget)
|
||||||
tab.setLayout(grid)
|
tab.setLayout(grid)
|
||||||
@ -259,7 +260,8 @@ class MainWindow(BaseMainWindow):
|
|||||||
if tab is not None and self.report_dock.isVisible():
|
if tab is not None and self.report_dock.isVisible():
|
||||||
reg_items = tab.property("reg_items")
|
reg_items = tab.property("reg_items")
|
||||||
curve_items = tab.property("curve_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:
|
def _save_plots(self) -> None:
|
||||||
filepath, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Save file", "", "Image Files (*.png *.jpeg)")
|
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 copy
|
||||||
import traceback
|
import traceback
|
||||||
import sys
|
import sys
|
||||||
@ -144,21 +149,36 @@ class PlotWidget(BasePlotWidget):
|
|||||||
layout: QVBoxLayout,
|
layout: QVBoxLayout,
|
||||||
TWC_time: float,
|
TWC_time: float,
|
||||||
ideal_time: float,
|
ideal_time: float,
|
||||||
tesla_time: float) -> None:
|
tesla_time: float,
|
||||||
|
qt_items: dict) -> None:
|
||||||
"""
|
"""
|
||||||
Добавляет QLabel с информацией о производительности.
|
Добавляет QLabel с информацией о производительности.
|
||||||
"""
|
"""
|
||||||
tesla_TWC = round((1 - TWC_time/tesla_time)*100, 2) if tesla_time else 0.0
|
tesla_TWC = round((1 - TWC_time/tesla_time)*100, 2) if tesla_time else 0.0
|
||||||
tesla_ideal = round((1 - ideal_time/tesla_time)*100, 2) if tesla_time else 0.0
|
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
|
TWC_ideal = round((ideal_time/TWC_time)*100, 2) if TWC_time else 0.0
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
performance_label = QLabel(
|
|
||||||
f"Сокращение длительности: фактическое = {tesla_TWC} %"
|
|
||||||
)
|
|
||||||
#f"идеальное = {tesla_ideal} %; КДИП = {TWC_ideal}%"
|
|
||||||
self.set_style(performance_label)
|
|
||||||
layout.addWidget(performance_label)
|
|
||||||
performance_label.update()
|
|
||||||
|
|
||||||
def _build_widget(self, data: list[Any]) -> QWidget:
|
def _build_widget(self, data: list[Any]) -> QWidget:
|
||||||
"""
|
"""
|
||||||
@ -170,6 +190,7 @@ class PlotWidget(BasePlotWidget):
|
|||||||
plot_layout = pg.GraphicsLayoutWidget()
|
plot_layout = pg.GraphicsLayoutWidget()
|
||||||
reg_items = {"real":{}, "ideal":{}}
|
reg_items = {"real":{}, "ideal":{}}
|
||||||
curve_items = {"real":{}, "ideal":{}}
|
curve_items = {"real":{}, "ideal":{}}
|
||||||
|
qt_items = {}
|
||||||
|
|
||||||
dataframe, points_pocket, useful_data = data
|
dataframe, points_pocket, useful_data = data
|
||||||
tesla_time = useful_data["tesla_time"]
|
tesla_time = useful_data["tesla_time"]
|
||||||
@ -288,7 +309,7 @@ class PlotWidget(BasePlotWidget):
|
|||||||
plot_item.setXLink(main_plot)
|
plot_item.setXLink(main_plot)
|
||||||
|
|
||||||
if settings["performance"] and not dat_is_none:
|
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)
|
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))
|
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)
|
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:
|
def build(self, data: list[list[Any]]) -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -13,7 +13,7 @@ class ReportSettings(QtWidgets.QWidget):
|
|||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
#self._tab_cashe = LRUCache(maxsize=1000)
|
#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 для элементов всех графиков выбранной вкладки"""
|
"""Создает ParameterTree для элементов всех графиков выбранной вкладки"""
|
||||||
try:
|
try:
|
||||||
self._clear()
|
self._clear()
|
||||||
@ -30,12 +30,13 @@ class ReportSettings(QtWidgets.QWidget):
|
|||||||
self._tab_cashe[index] = body"""
|
self._tab_cashe[index] = body"""
|
||||||
body= [
|
body= [
|
||||||
self._generate_reg_params(reg_items),
|
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 = Parameter.create(name='params', type='group', children=body)
|
||||||
params.sigTreeStateChanged.connect(
|
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)
|
param_tree.setParameters(params, showTop=False)
|
||||||
except:
|
except:
|
||||||
@ -58,6 +59,19 @@ class ReportSettings(QtWidgets.QWidget):
|
|||||||
else:
|
else:
|
||||||
self.setLayout(QtWidgets.QVBoxLayout())
|
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,
|
def _generate_reg_params(self,
|
||||||
reg_items: dict) -> dict:
|
reg_items: dict) -> dict:
|
||||||
|
|
||||||
@ -128,7 +142,8 @@ class ReportSettings(QtWidgets.QWidget):
|
|||||||
|
|
||||||
def _update_settings(self,
|
def _update_settings(self,
|
||||||
reg_items: dict,
|
reg_items: dict,
|
||||||
curve_items: dict,
|
curve_items: dict,
|
||||||
|
qt_items: dict,
|
||||||
params: Parameter) -> None:
|
params: Parameter) -> None:
|
||||||
|
|
||||||
"""Задает параметры элементов в соответствии с paramTree"""
|
"""Задает параметры элементов в соответствии с paramTree"""
|
||||||
@ -138,6 +153,8 @@ class ReportSettings(QtWidgets.QWidget):
|
|||||||
|
|
||||||
real_plots = params.child("Plots").child("Real plots")
|
real_plots = params.child("Plots").child("Real plots")
|
||||||
ideal_plots = params.child("Plots").child("Ideal 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["real"], real_sectors)
|
||||||
self._set_sector_settings(reg_items["ideal"], ideal_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():
|
for key, item_dict in curve_items["ideal"].items():
|
||||||
self._set_plot_settings(item_dict, ideal_plots.child(key))
|
self._set_plot_settings(item_dict, ideal_plots.child(key))
|
||||||
|
|
||||||
|
self._set_qt_settings(qt_items, qt_settings)
|
||||||
|
|
||||||
def _set_sector_settings(self,
|
def _set_sector_settings(self,
|
||||||
sectors: dict,
|
sectors: dict,
|
||||||
settings: Parameter) -> None:
|
settings: Parameter) -> None:
|
||||||
@ -168,7 +187,7 @@ class ReportSettings(QtWidgets.QWidget):
|
|||||||
reg.setBrush(brush)
|
reg.setBrush(brush)
|
||||||
|
|
||||||
def _set_plot_settings(self,
|
def _set_plot_settings(self,
|
||||||
curves:dict,
|
curves: dict,
|
||||||
settings: Parameter) -> None:
|
settings: Parameter) -> None:
|
||||||
|
|
||||||
"""Задает параметры кривых в соответствии с настройками"""
|
"""Задает параметры кривых в соответствии с настройками"""
|
||||||
@ -185,4 +204,15 @@ class ReportSettings(QtWidgets.QWidget):
|
|||||||
curve.setPen(pen)
|
curve.setPen(pen)
|
||||||
else:
|
else:
|
||||||
item.setVisible(visibility)
|
item.setVisible(visibility)
|
||||||
item.setPen(pen)
|
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