fix: scroll Local Contact tabs so rows keep text height
CI / lint (push) Skipped
CI / test (3.11) (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / test (3.13) (pull_request) Successful in 45s
CI / test (3.12) (pull_request) Successful in 49s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 47s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m8s
CI / test-with-coverage (pull_request) Successful in 2m6s
CI / coverage-analysis (pull_request) Failing after 4s
CI / test (3.11) (pull_request) Successful in 2m49s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 4m4s
CI / lint (pull_request) Failing after 4m25s
CI / lint (push) Skipped
CI / test (3.11) (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / test (3.13) (pull_request) Successful in 45s
CI / test (3.12) (pull_request) Successful in 49s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 47s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m8s
CI / test-with-coverage (pull_request) Successful in 2m6s
CI / coverage-analysis (pull_request) Failing after 4s
CI / test (3.11) (pull_request) Successful in 2m49s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 4m4s
CI / lint (pull_request) Failing after 4m25s
The dialog's explicit minimum size is smaller than some tabs' content; without a scroll area Qt squeezes rows below text height (clipped labels on the Hardware tab). Wrap every tab in a QScrollArea. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,7 @@ from PySide6.QtWidgets import (
|
||||
QLabel,
|
||||
QMessageBox,
|
||||
QPushButton,
|
||||
QScrollArea,
|
||||
QTabWidget,
|
||||
QTextEdit,
|
||||
QVBoxLayout,
|
||||
@@ -128,13 +129,16 @@ class LocalContactPanel(QFrame):
|
||||
self._tabs = QTabWidget(self)
|
||||
layout.addWidget(self._tabs, 1)
|
||||
|
||||
self._tabs.addTab(self._build_status_tab(), self.TAB_STATUS)
|
||||
self._tabs.addTab(self._build_recovery_tab(), self.TAB_RECOVERY)
|
||||
self._tabs.addTab(self._build_tell_tab(), self.TAB_TELL)
|
||||
self._tabs.addTab(self._build_bec_tab(), self.TAB_BEC)
|
||||
self._tabs.addTab(self._build_hardware_tab(), self.TAB_HARDWARE)
|
||||
self._tabs.addTab(self._build_detector_tab(), self.TAB_DETECTOR)
|
||||
self._tabs.addTab(self._build_config_tab(), self.TAB_CONFIG)
|
||||
# Every tab scrolls: the dialog's explicit minimum size is smaller
|
||||
# than some tabs' content, and without a scroll area Qt squeezes the
|
||||
# rows below text height (clipped labels on the Hardware tab).
|
||||
self._tabs.addTab(self._scrolled(self._build_status_tab()), self.TAB_STATUS)
|
||||
self._tabs.addTab(self._scrolled(self._build_recovery_tab()), self.TAB_RECOVERY)
|
||||
self._tabs.addTab(self._scrolled(self._build_tell_tab()), self.TAB_TELL)
|
||||
self._tabs.addTab(self._scrolled(self._build_bec_tab()), self.TAB_BEC)
|
||||
self._tabs.addTab(self._scrolled(self._build_hardware_tab()), self.TAB_HARDWARE)
|
||||
self._tabs.addTab(self._scrolled(self._build_detector_tab()), self.TAB_DETECTOR)
|
||||
self._tabs.addTab(self._scrolled(self._build_config_tab()), self.TAB_CONFIG)
|
||||
|
||||
self._daq.local_contact_simulation_state_loaded.connect(self._apply_simulation_state)
|
||||
self._daq.local_contact_device_state_loaded.connect(self._apply_device_state)
|
||||
@@ -174,6 +178,14 @@ class LocalContactPanel(QFrame):
|
||||
)
|
||||
return self._register_status_widget(widget)
|
||||
|
||||
@staticmethod
|
||||
def _scrolled(widget: QWidget) -> QScrollArea:
|
||||
area = QScrollArea()
|
||||
area.setWidgetResizable(True)
|
||||
area.setFrameShape(QFrame.Shape.NoFrame)
|
||||
area.setWidget(widget)
|
||||
return area
|
||||
|
||||
def _build_status_tab(self) -> QWidget:
|
||||
tab = QWidget(self)
|
||||
layout = QVBoxLayout(tab)
|
||||
|
||||
Reference in New Issue
Block a user