Skip to content

Commit 4d34cd2

Browse files
authored
Merge pull request #93 from DeepLabCut/clickable_label
Make keypoint labels clickable in the color reference widget
2 parents 66da173 + 2fa2492 commit 4d34cd2

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

src/napari_deeplabcut/_widgets.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from napari.utils.events import Event
1919
from napari.utils.history import get_save_history, update_save_history
2020
from qtpy.QtCore import Qt, QTimer, Signal, QSize, QPoint, QSettings
21-
from qtpy.QtGui import QPainter, QIcon, QAction
21+
from qtpy.QtGui import QPainter, QIcon, QAction, QCursor
2222
from qtpy.QtWidgets import (
2323
QButtonGroup,
2424
QCheckBox,
@@ -989,6 +989,26 @@ def dropEvent(self, event):
989989
self.sig_dropped.emit(event)
990990

991991

992+
class ClickableLabel(QLabel):
993+
clicked = Signal(str)
994+
995+
def __init__(self, text="", color="turquoise", parent=None):
996+
super().__init__(text, parent)
997+
self._default_style = self.styleSheet()
998+
self.color = color
999+
1000+
def mousePressEvent(self, event):
1001+
self.clicked.emit(self.text())
1002+
1003+
def enterEvent(self, event):
1004+
self.setCursor(QCursor(Qt.PointingHandCursor))
1005+
self.setStyleSheet(f"color: {self.color}")
1006+
1007+
def leaveEvent(self, event):
1008+
self.unsetCursor()
1009+
self.setStyleSheet(self._default_style)
1010+
1011+
9921012
class LabelPair(QWidget):
9931013
def __init__(self, color: str, name: str, parent: QWidget):
9941014
super().__init__(parent)
@@ -997,7 +1017,7 @@ def __init__(self, color: str, name: str, parent: QWidget):
9971017
self._part_name = name
9981018

9991019
self.color_label = QLabel("", parent=self)
1000-
self.part_label = QLabel(name, parent=self)
1020+
self.part_label = ClickableLabel(name, color=color, parent=self)
10011021

10021022
self.color_label.setToolTip(name)
10031023
self.part_label.setToolTip(name)
@@ -1057,6 +1077,15 @@ def __init__(self, parent):
10571077

10581078
self._build()
10591079

1080+
@property
1081+
def labels(self):
1082+
labels = []
1083+
for i in range(self._layout.count()):
1084+
item = self._layout.itemAt(i)
1085+
if w := item.widget():
1086+
labels.append(w)
1087+
return labels
1088+
10601089
def _build(self):
10611090
self._container.setSizePolicy(
10621091
QSizePolicy.Fixed, QSizePolicy.Maximum

0 commit comments

Comments
 (0)