From a6616f5986d59ad8d065105234f5b704731cce71 Mon Sep 17 00:00:00 2001 From: wyzula-jan <133381102+wyzula-jan@users.noreply.github.com> Date: Thu, 19 Oct 2023 16:34:25 +0200 Subject: [PATCH] feat: qt_utils custom class for class where one can delete the row with backspace or delete --- bec_widgets/qt_utils/__init__.py | 1 + bec_widgets/qt_utils/bec_table.py | 20 ++++++++++++++++++++ bec_widgets/widgets/monitor/config_dialog.py | 2 +- bec_widgets/widgets/monitor/tab_template.ui | 9 ++++++++- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 bec_widgets/qt_utils/bec_table.py diff --git a/bec_widgets/qt_utils/__init__.py b/bec_widgets/qt_utils/__init__.py index f7f6cbb8..b0a37283 100644 --- a/bec_widgets/qt_utils/__init__.py +++ b/bec_widgets/qt_utils/__init__.py @@ -1,3 +1,4 @@ from .crosshair import Crosshair from .colors import Colors from .validator_delegate import DoubleValidationDelegate +from .bec_table import BECTable diff --git a/bec_widgets/qt_utils/bec_table.py b/bec_widgets/qt_utils/bec_table.py new file mode 100644 index 00000000..10908c6c --- /dev/null +++ b/bec_widgets/qt_utils/bec_table.py @@ -0,0 +1,20 @@ +from PyQt5.QtWidgets import QTableWidget +from PyQt5.QtCore import Qt + + +class BECTable(QTableWidget): + """Table widget with custom keyPressEvent to delete rows with backspace or delete key""" + + def keyPressEvent(self, event) -> None: + """ + Delete selected rows with backspace or delete key + Args: + event: keyPressEvent + """ + if event.key() in (Qt.Key_Backspace, Qt.Key_Delete): + selected_ranges = self.selectedRanges() + for selected_range in selected_ranges: + for row in range(selected_range.topRow(), selected_range.bottomRow() + 1): + self.removeRow(row) + else: + super().keyPressEvent(event) diff --git a/bec_widgets/widgets/monitor/config_dialog.py b/bec_widgets/widgets/monitor/config_dialog.py index 20028a9d..425592ab 100644 --- a/bec_widgets/widgets/monitor/config_dialog.py +++ b/bec_widgets/widgets/monitor/config_dialog.py @@ -1,6 +1,6 @@ import os -from PyQt5.QtCore import Qt +from bec_widgets.qt_utils import BECTable from PyQt5 import uic from PyQt5.QtCore import pyqtSignal from PyQt5.QtWidgets import ( diff --git a/bec_widgets/widgets/monitor/tab_template.ui b/bec_widgets/widgets/monitor/tab_template.ui index 8b0c8461..996c2679 100644 --- a/bec_widgets/widgets/monitor/tab_template.ui +++ b/bec_widgets/widgets/monitor/tab_template.ui @@ -106,7 +106,7 @@ - + Name @@ -159,6 +159,13 @@ + + + BECTable + QTableWidget +
bec_widgets.qt_utils.h
+
+