update dd06 display

This commit is contained in:
2026-07-26 18:14:47 +08:00
parent b154a3acbb
commit 044fe02107
6 changed files with 169 additions and 7 deletions
+35 -1
View File
@@ -13,6 +13,7 @@ from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtWidgets import (
QApplication,
QComboBox,
QFileDialog,
QHBoxLayout,
QLabel,
@@ -35,7 +36,12 @@ from gui.sensors import create_sensor_adapter
from gui.widgets.log_panel import TeeStream, WidgetLogHandler, make_log_widget
from gui.widgets.qt_pixmap import ndarray_to_pixmap, pixmap_keep_aspect
from .backend import PLOT_BUFFER_POINTS, PLOT_WINDOW_SEC, QtViewerBackend, panel_width_for_aspect
from .backend import (
PLOT_BUFFER_POINTS,
PLOT_WINDOW_SEC,
QtViewerBackend,
panel_width_for_aspect,
)
from .styles import CURVE_THEME_COLOR, STYLE
@@ -127,6 +133,17 @@ class QtViewerWindow(QMainWindow):
self.btn_stop.clicked.connect(self._on_stop)
bar.addWidget(self.btn_stop)
bg_caption = QLabel("背景")
bg_caption.setObjectName("toolbarCaption")
bar.addWidget(bg_caption)
self.bg_combo = QComboBox()
self.bg_combo.setObjectName("bgCombo")
self.bg_combo.addItem("纯色背景", "pure_color")
self.bg_combo.addItem("采集图像", "captured")
self.bg_combo.setCurrentIndex(0)
self.bg_combo.currentIndexChanged.connect(self._on_arrow_background_changed)
bar.addWidget(self.bg_combo)
root_layout.addLayout(bar)
v_splitter = QSplitter(Qt.Vertical)
@@ -391,6 +408,23 @@ class QtViewerWindow(QMainWindow):
self.sensor_adapter.reset()
print("追踪器已重置。")
def _on_arrow_background_changed(self, _index: int) -> None:
value = self.bg_combo.currentData()
if value not in ("pure_color", "captured"):
return
self.viewer_backend.set_arrow_background(value)
if self._last_snapshot is None:
return
viewer_frame = self.viewer_backend.rebuild_display(self._last_snapshot)
self._last_viewer_frame = viewer_frame
aspect_changed = abs(viewer_frame.aspect_ratio - self._display_aspect) > 1e-3
self._display_aspect = viewer_frame.aspect_ratio
self._source_pixmap = ndarray_to_pixmap(viewer_frame.display_image, bgr=True)
if aspect_changed:
self.adjust_image_panel()
else:
self._render_display_pixmap()
def keyPressEvent(self, event):
key = event.key()
if key == Qt.Key_Escape: