Selaa lähdekoodia

Fit to content in label field

Kentaro Wada 6 vuotta sitten
vanhempi
commit
d3e5134756
3 muutettua tiedostoa jossa 25 lisäystä ja 1 poistoa
  1. 1 0
      labelme/app.py
  2. 3 0
      labelme/config/default_config.yaml
  3. 21 1
      labelme/widgets/label_dialog.py

+ 1 - 0
labelme/app.py

@@ -85,6 +85,7 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
             sort_labels=self._config['sort_labels'],
             show_text_field=self._config['show_label_text_field'],
             completion=self._config['label_completion'],
+            fit_to_content=self._config['fit_to_content'],
         )
 
         self.labelList = LabelQListWidget()

+ 3 - 0
labelme/config/default_config.yaml

@@ -11,6 +11,9 @@ validate_label: null
 # label_dialog
 show_label_text_field: true
 label_completion: startswith
+fit_to_content:
+  column: true
+  row: false
 
 epsilon: 11.0
 

+ 21 - 1
labelme/widgets/label_dialog.py

@@ -29,7 +29,11 @@ class LabelDialog(QtWidgets.QDialog):
 
     def __init__(self, text="Enter object label", parent=None, labels=None,
                  sort_labels=True, show_text_field=True,
-                 completion='startswith'):
+                 completion='startswith', fit_to_content=None):
+        if fit_to_content is None:
+            fit_to_content = {'row': False, 'column': True}
+        self._fit_to_content = fit_to_content
+
         super(LabelDialog, self).__init__(parent)
         self.edit = LabelQLineEdit()
         self.edit.setPlaceholderText(text)
@@ -51,6 +55,14 @@ class LabelDialog(QtWidgets.QDialog):
         layout.addWidget(bb)
         # label_list
         self.labelList = QtWidgets.QListWidget()
+        if self._fit_to_content['row']:
+            self.labelList.setHorizontalScrollBarPolicy(
+                QtCore.Qt.ScrollBarAlwaysOff
+            )
+        if self._fit_to_content['column']:
+            self.labelList.setVerticalScrollBarPolicy(
+                QtCore.Qt.ScrollBarAlwaysOff
+            )
         self._sort_labels = sort_labels
         if labels:
             self.labelList.addItems(labels)
@@ -111,6 +123,14 @@ class LabelDialog(QtWidgets.QDialog):
         self.edit.setText(text)
 
     def popUp(self, text=None, move=True):
+        if self._fit_to_content['row']:
+            self.labelList.setMinimumHeight(
+                self.labelList.sizeHintForRow(0) * self.labelList.count() + 2
+            )
+        if self._fit_to_content['column']:
+            self.labelList.setMinimumWidth(
+                self.labelList.sizeHintForColumn(0) + 2
+            )
         # if text is None, the previous label in self.edit is kept
         if text is None:
             text = self.edit.text()