sw: update reference graph options
This commit is contained in:
@ -10,7 +10,7 @@ from dataclasses import dataclass
|
||||
from PyQt6.QtCore import QProcess, QTimer
|
||||
from PyQt6.QtCore import QObject, QThread, pyqtSignal
|
||||
|
||||
|
||||
from PyQt6.QtCore import Qt
|
||||
import pyqtgraph as pg
|
||||
from PyQt6.QtWidgets import QApplication, QMainWindow
|
||||
|
||||
@ -574,9 +574,23 @@ class MainWindow(QMainWindow):
|
||||
self.graph_widget.setLabel("bottom", "Sample")
|
||||
self.graph_widget.showGrid(x=True, y=True)
|
||||
|
||||
self.graph_curve = self.graph_widget.plot([])
|
||||
self.graph_curve = self.graph_widget.plot(
|
||||
[],
|
||||
name="Data",
|
||||
)
|
||||
|
||||
self.reference_curve = self.graph_widget.plot(
|
||||
[],
|
||||
name="Reference",
|
||||
)
|
||||
|
||||
self.graph_layout.addWidget(self.graph_widget)
|
||||
self.graph_curve = self.graph_widget.plot([], pen=pg.mkPen(width=2))
|
||||
self.reference_curve = self.graph_widget.plot(
|
||||
[], pen=pg.mkPen(style=Qt.PenStyle.DashLine))
|
||||
|
||||
self.checkbox_draw_reference.stateChanged.connect(
|
||||
self.update_reference_graph)
|
||||
|
||||
def setup_network_settings(self):
|
||||
self._bind_spinbox_setting(
|
||||
@ -655,8 +669,8 @@ class MainWindow(QMainWindow):
|
||||
def on_data_received(self, data: list[int]):
|
||||
self.data = data
|
||||
|
||||
x = list(range(len(data)))
|
||||
self.graph_curve.setData(x, data)
|
||||
self.draw_main_graph()
|
||||
self.update_reference_graph()
|
||||
|
||||
if data:
|
||||
self.set_measurement_status(
|
||||
@ -684,6 +698,54 @@ class MainWindow(QMainWindow):
|
||||
if hasattr(self, "label_ping_status"):
|
||||
self.label_ping_status.setText(text)
|
||||
|
||||
def draw_main_graph(self):
|
||||
if not self.data:
|
||||
self.graph_curve.setData([])
|
||||
return
|
||||
|
||||
x = list(range(len(self.data)))
|
||||
self.graph_curve.setData(x, self.data)
|
||||
|
||||
def update_reference_graph(self):
|
||||
"""
|
||||
Рисует или очищает эталонный график.
|
||||
Вызывается после получения данных и при переключении checkbox_draw_reference.
|
||||
"""
|
||||
|
||||
if not self.checkbox_draw_reference.isChecked():
|
||||
self.reference_curve.setData([])
|
||||
return
|
||||
|
||||
if not self.data:
|
||||
self.reference_curve.setData([])
|
||||
return
|
||||
|
||||
reference_data = self.build_reference_data(len(self.data))
|
||||
|
||||
if not reference_data:
|
||||
self.reference_curve.setData([])
|
||||
return
|
||||
|
||||
x = list(range(len(reference_data)))
|
||||
self.reference_curve.setData(x, reference_data)
|
||||
|
||||
def build_reference_data(self, length: int) -> list[int]:
|
||||
"""
|
||||
Тут потом опишешь свою логику построения эталонного сигнала.
|
||||
|
||||
Главное: вернуть массив такой же или нужной тебе длины.
|
||||
Например:
|
||||
reference = [0] * length
|
||||
reference[10:100] = ...
|
||||
return reference
|
||||
"""
|
||||
|
||||
# TODO: сюда вставить свою логику эталонного графика
|
||||
|
||||
reference = [0] * length
|
||||
|
||||
return reference
|
||||
|
||||
|
||||
def main():
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
@ -409,6 +409,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkbox_draw_reference">
|
||||
<property name="text">
|
||||
<string>Отрисовка эталона</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
|
||||
Reference in New Issue
Block a user