Open JesperChristensen89 opened 6 years ago
I'm not sure, but you're more than welcome to try 😊
Base on v1.8.6, hotkeys including 1-5.
diff --git a/labelImg.py b/labelImg.py
index 915ca04..56d1505 100644
--- a/labelImg.py
+++ b/labelImg.py
@@ -103,6 +103,9 @@ class MainWindow(QMainWindow, WindowMixin):
self.cur_img_idx = 0
self.img_count = 1
+ # Number hotkeys
+ self.hotkey_number = 0
+
# Whether we need to save or not.
self.dirty = False
@@ -270,6 +273,17 @@ class MainWindow(QMainWindow, WindowMixin):
edit_mode = action(get_str('editBox'), self.set_edit_mode,
'Ctrl+J', 'edit', get_str('editBoxDetail'), enabled=False)
+ create_1 = action(get_str('crtBox'), self.create_shape_1,
+ '1', 'new', get_str('crtBoxDetail'), enabled=True)
+ create_2 = action(get_str('crtBox'), self.create_shape_2,
+ '2', 'new', get_str('crtBoxDetail'), enabled=True)
+ create_3 = action(get_str('crtBox'), self.create_shape_3,
+ '3', 'new', get_str('crtBoxDetail'), enabled=True)
+ create_4 = action(get_str('crtBox'), self.create_shape_4,
+ '4', 'new', get_str('crtBoxDetail'), enabled=True)
+ create_5 = action(get_str('crtBox'), self.create_shape_5,
+ '5', 'new', get_str('crtBoxDetail'), enabled=True)
+
create = action(get_str('crtBox'), self.create_shape,
'w', 'new', get_str('crtBoxDetail'), enabled=False)
delete = action(get_str('delBox'), self.delete_selected_shape,
@@ -357,6 +371,7 @@ class MainWindow(QMainWindow, WindowMixin):
# Store actions for further handling.
self.actions = Struct(save=save, save_format=save_format, saveAs=save_as, open=open, close=close, resetAll=reset_all, deleteImg=delete_image,
lineColor=color1, create=create, delete=delete, edit=edit, copy=copy,
+ create_1=create_1,create_2=create_2,create_3=create_3,create_4=create_4,create_5=create_5,
createMode=create_mode, editMode=edit_mode, advancedMode=advanced_mode,
shapeLineColor=shape_line_color, shapeFillColor=shape_fill_color,
zoom=zoom, zoomIn=zoom_in, zoomOut=zoom_out, zoomOrg=zoom_org,
@@ -422,6 +437,7 @@ class MainWindow(QMainWindow, WindowMixin):
self.tools = self.toolbar('Tools')
self.actions.beginner = (
open, open_dir, change_save_dir, open_next_image, open_prev_image, verify, save, save_format, None, create, copy, delete, None,
+ create_1,create_2,create_3,create_4,create_5,
zoom_in, zoom, zoom_out, fit_window, fit_width)
self.actions.advanced = (
@@ -669,6 +685,31 @@ class MainWindow(QMainWindow, WindowMixin):
def show_shortcuts_dialog(self):
self.show_tutorial_dialog(browser='default', link='https://github.com/tzutalin/labelImg#Hotkeys')
+ def create_shape_1(self):
+ self.set_hotkey_number(1)
+ if self.actions.create.isEnabled():
+ self.create_shape()
+
+ def create_shape_2(self):
+ self.set_hotkey_number(2)
+ if self.actions.create.isEnabled():
+ self.create_shape()
+
+ def create_shape_3(self):
+ self.set_hotkey_number(3)
+ if self.actions.create.isEnabled():
+ self.create_shape()
+
+ def create_shape_4(self):
+ self.set_hotkey_number(4)
+ if self.actions.create.isEnabled():
+ self.create_shape()
+
+ def create_shape_5(self):
+ self.set_hotkey_number(5)
+ if self.actions.create.isEnabled():
+ self.create_shape()
+
def create_shape(self):
assert self.beginner()
self.canvas.set_editing(False)
@@ -919,13 +960,16 @@ class MainWindow(QMainWindow, WindowMixin):
else: # User probably changed item visibility
self.canvas.set_shape_visible(shape, item.checkState() == Qt.Checked)
+ def set_hotkey_number(self, number=0):
+ self.hotkey_number = number
+
# Callback functions:
def new_shape(self):
"""Pop-up and give focus to the label editor.
position MUST be in global coordinates.
"""
- if not self.use_default_label_checkbox.isChecked() or not self.default_label_text_line.text():
+ if self.hotkey_number == 0 or self.hotkey_number >= len(self.label_hist) and (not self.use_default_label_checkbox.isChecked() or not self.default_label_text_line.text()):
if len(self.label_hist) > 0:
self.label_dialog = LabelDialog(
parent=self, list_item=self.label_hist)
@@ -936,8 +980,12 @@ class MainWindow(QMainWindow, WindowMixin):
else:
text = self.label_dialog.pop_up(text=self.prev_label_text)
self.lastLabel = text
- else:
+ elif self.hotkey_number == 0 or self.hotkey_number >= len(self.label_hist):
text = self.default_label_text_line.text()
+ else:
+ text = self.label_hist[self.hotkey_number-1]
+
+ self.hotkey_number = 0
# Add Chris
self.diffc_button.setChecked(False)
Instead having the dialog open and pressinh enter each time, it would be nice if one could simply use 1, 2, 3 etc. for bbox labels. Would this be possible?