Skip to content

Commit bc4362a

Browse files
committed
- 添加了类别查找功能。
当类别很多时,可通过该功能快速找到指定类别。查找使用字符串模糊匹配。
1 parent 04ca02d commit bc4362a

File tree

7 files changed

+51
-15
lines changed

7 files changed

+51
-15
lines changed

ISAT/ui/category_dock.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# -*- coding: utf-8 -*-
22

3-
# Form implementation generated from reading ui file 'category_dock.ui'
3+
# Form implementation generated from reading ui file '/home/lg/PycharmProjects/ISAT_with_segment_anything/ISAT/ui/category_dock.ui'
44
#
5-
# Created by: PyQt5 UI code generator 5.15.9
5+
# Created by: PyQt5 UI code generator 5.15.10
66
#
77
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
88
# run again. Do not edit this file unless you know what you are doing.
@@ -17,8 +17,11 @@ def setupUi(self, Form):
1717
Form.resize(294, 462)
1818
self.verticalLayout = QtWidgets.QVBoxLayout(Form)
1919
self.verticalLayout.setContentsMargins(2, 2, 2, 2)
20-
self.verticalLayout.setSpacing(0)
20+
self.verticalLayout.setSpacing(6)
2121
self.verticalLayout.setObjectName("verticalLayout")
22+
self.lineEdit_search_category = QtWidgets.QLineEdit(Form)
23+
self.lineEdit_search_category.setObjectName("lineEdit_search_category")
24+
self.verticalLayout.addWidget(self.lineEdit_search_category)
2225
self.listWidget = QtWidgets.QListWidget(Form)
2326
self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
2427
self.listWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
@@ -55,6 +58,7 @@ def setupUi(self, Form):
5558
def retranslateUi(self, Form):
5659
_translate = QtCore.QCoreApplication.translate
5760
Form.setWindowTitle(_translate("Form", "Form"))
61+
self.lineEdit_search_category.setPlaceholderText(_translate("Form", "Search categories."))
5862
self.pushButton_group_mode.setStatusTip(_translate("Form", "Group mode"))
5963
self.pushButton_group_mode.setWhatsThis(_translate("Form", "Group mode"))
6064
self.pushButton_group_mode.setText(_translate("Form", "Auto"))

ISAT/ui/category_dock.ui

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</property>
1616
<layout class="QVBoxLayout" name="verticalLayout">
1717
<property name="spacing">
18-
<number>0</number>
18+
<number>6</number>
1919
</property>
2020
<property name="leftMargin">
2121
<number>2</number>
@@ -29,6 +29,13 @@
2929
<property name="bottomMargin">
3030
<number>2</number>
3131
</property>
32+
<item>
33+
<widget class="QLineEdit" name="lineEdit_search_category">
34+
<property name="placeholderText">
35+
<string>Search categories.</string>
36+
</property>
37+
</widget>
38+
</item>
3239
<item>
3340
<widget class="QListWidget" name="listWidget">
3441
<property name="selectionMode">

ISAT/ui/zh_CN.qm

61 Bytes
Binary file not shown.

ISAT/ui/zh_CN.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -927,37 +927,37 @@
927927
<translation>显示/隐藏</translation>
928928
</message>
929929
<message>
930-
<location filename="category_dock.py" line="59"/>
930+
<location filename="category_dock.py" line="63"/>
931931
<source>Group mode</source>
932932
<translation>组模式[自动/手动]</translation>
933933
</message>
934934
<message>
935-
<location filename="category_dock.py" line="60"/>
935+
<location filename="category_dock.py" line="64"/>
936936
<source>Auto</source>
937937
<translation></translation>
938938
</message>
939939
<message>
940-
<location filename="category_dock.py" line="62"/>
940+
<location filename="category_dock.py" line="66"/>
941941
<source>Current group -</source>
942942
<translation>组id-</translation>
943943
</message>
944944
<message>
945-
<location filename="category_dock.py" line="63"/>
945+
<location filename="category_dock.py" line="67"/>
946946
<source>-</source>
947947
<translation>-</translation>
948948
</message>
949949
<message>
950-
<location filename="category_dock.py" line="65"/>
950+
<location filename="category_dock.py" line="69"/>
951951
<source>Current group</source>
952952
<translation>当前组id</translation>
953953
</message>
954954
<message>
955-
<location filename="category_dock.py" line="67"/>
955+
<location filename="category_dock.py" line="71"/>
956956
<source>Current group +</source>
957957
<translation>组id+</translation>
958958
</message>
959959
<message>
960-
<location filename="category_dock.py" line="68"/>
960+
<location filename="category_dock.py" line="72"/>
961961
<source>+</source>
962962
<translation>+</translation>
963963
</message>
@@ -1006,6 +1006,11 @@
10061006
<source>Next group.</source>
10071007
<translation>下一组.</translation>
10081008
</message>
1009+
<message>
1010+
<location filename="category_dock.py" line="61"/>
1011+
<source>Search categories.</source>
1012+
<translation>查找类别.</translation>
1013+
</message>
10091014
</context>
10101015
<context>
10111016
<name>MainWindow</name>

ISAT/widgets/category_dock_widget.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from PyQt5 import QtWidgets, QtCore
55
from ISAT.ui.category_dock import Ui_Form
6+
from fuzzywuzzy import process
67

78

89
class CategoriesDockWidget(QtWidgets.QWidget, Ui_Form):
@@ -11,6 +12,8 @@ def __init__(self, mainwindow):
1112
self.setupUi(self)
1213
self.mainwindow = mainwindow
1314
self.listWidget.itemClicked.connect(self.item_choice)
15+
self.lineEdit_search_category.textChanged.connect(self.update_widget)
16+
self.lineEdit_search_category.setClearButtonEnabled(True)
1417

1518
# 新增 手动/自动 group 选择
1619
self.lineEdit_currentGroup.setText(str(self.mainwindow.current_group))
@@ -23,8 +26,21 @@ def update_widget(self):
2326
self.listWidget.clear()
2427
btngroup = QtWidgets.QButtonGroup(self)
2528
labels = self.mainwindow.cfg.get('label', [])
26-
for index in range(len(labels)):
27-
label = labels[index]
29+
search_text = self.lineEdit_search_category.text()
30+
31+
name_label_dict = {label.get('name', 'UNKNOW'): label for label in labels}
32+
33+
label_names = [label.get('name', 'UNKNOW') for label in labels]
34+
if search_text == '':
35+
show_label_names = label_names
36+
elif search_text.strip(' ') == '':
37+
show_label_names = label_names
38+
else:
39+
matches = process.extract(search_text, label_names, limit=5)
40+
show_label_names = [name for name, score in matches if score > 0]
41+
42+
for index in range(len(show_label_names)):
43+
label = name_label_dict[show_label_names[index]]
2844
name = label.get('name', 'UNKNOW')
2945
color = label.get('color', '#000000')
3046
item = QtWidgets.QListWidgetItem()

requirements.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ numpy
1111
pycocotools
1212
shapely
1313
hydra-core>=1.3.2
14-
tqdm>=4.66.1
14+
tqdm>=4.66.1
15+
fuzzywuzzy
16+
python-Levenshtein

setup.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ def get_install_requires():
5959
'timm',
6060
'shapely',
6161
'hydra-core>=1.3.2',
62-
'tqdm>=4.66.1'
62+
'tqdm>=4.66.1',
63+
'fuzzywuzzy'
64+
'python-Levenshtein'
6365
],
6466

6567
classifiers=[

0 commit comments

Comments
 (0)