Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不会修仙的道士
labelme
提交
92d2b226
L
labelme
项目概览
不会修仙的道士
/
labelme
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
labelme
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
92d2b226
编写于
5月 06, 2019
作者:
C
cmerchant
提交者:
Kentaro Wada
5月 15, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added dialog for label flags when a new shape is created
上级
ecdd1863
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
6 deletion
+41
-6
labelme/app.py
labelme/app.py
+9
-3
labelme/widgets/label_dialog.py
labelme/widgets/label_dialog.py
+32
-3
未找到文件。
labelme/app.py
浏览文件 @
92d2b226
...
...
@@ -81,6 +81,7 @@ class MainWindow(QtWidgets.QMainWindow):
show_text_field
=
self
.
_config
[
'show_label_text_field'
],
completion
=
self
.
_config
[
'label_completion'
],
fit_to_content
=
self
.
_config
[
'fit_to_content'
],
flags
=
self
.
_config
[
'label_flags'
]
)
self
.
labelList
=
LabelQListWidget
()
...
...
@@ -861,7 +862,8 @@ class MainWindow(QtWidgets.QMainWindow):
if
not
self
.
canvas
.
editing
():
return
item
=
item
if
item
else
self
.
currentItem
()
text
=
self
.
labelDialog
.
popUp
(
item
.
text
()
if
item
else
None
)
shape
=
self
.
labelList
.
get_shape_from_item
(
item
)
text
,
flags
=
self
.
labelDialog
.
popUp
(
item
.
text
()
if
item
else
None
,
flags
=
(
shape
.
flags
if
item
else
None
))
if
text
is
None
:
return
if
not
self
.
validateLabel
(
text
):
...
...
@@ -869,6 +871,8 @@ class MainWindow(QtWidgets.QMainWindow):
"Invalid label '{}' with validation type '{}'"
.
format
(
text
,
self
.
_config
[
'validate_label'
]))
return
shape
.
flags
=
flags
self
.
loadLabelFlags
(
flags
)
item
.
setText
(
text
)
self
.
setDirty
()
if
not
self
.
uniqLabelList
.
findItems
(
text
,
Qt
.
MatchExactly
):
...
...
@@ -1083,7 +1087,7 @@ class MainWindow(QtWidgets.QMainWindow):
if
len
(
split
)
>
1
and
split
[
-
1
].
isdigit
():
split
[
-
1
]
=
str
(
int
(
split
[
-
1
])
+
1
)
text
=
'-'
.
join
(
split
)
text
=
self
.
labelDialog
.
popUp
(
text
)
text
,
flags
=
self
.
labelDialog
.
popUp
(
text
)
if
text
is
not
None
and
not
self
.
validateLabel
(
text
):
self
.
errorMessage
(
'Invalid label'
,
...
...
@@ -1094,7 +1098,9 @@ class MainWindow(QtWidgets.QMainWindow):
self
.
canvas
.
undoLastLine
()
self
.
canvas
.
shapesBackups
.
pop
()
else
:
self
.
addLabel
(
self
.
canvas
.
setLastLabel
(
text
))
shape
=
self
.
canvas
.
setLastLabel
(
text
)
shape
.
flags
=
flags
self
.
addLabel
(
shape
)
self
.
actions
.
editMode
.
setEnabled
(
True
)
self
.
actions
.
undoLastPoint
.
setEnabled
(
False
)
self
.
actions
.
undo
.
setEnabled
(
True
)
...
...
labelme/widgets/label_dialog.py
浏览文件 @
92d2b226
...
...
@@ -29,7 +29,7 @@ class LabelDialog(QtWidgets.QDialog):
def
__init__
(
self
,
text
=
"Enter object label"
,
parent
=
None
,
labels
=
None
,
sort_labels
=
True
,
show_text_field
=
True
,
completion
=
'startswith'
,
fit_to_content
=
None
):
completion
=
'startswith'
,
fit_to_content
=
None
,
flags
=
[]
):
if
fit_to_content
is
None
:
fit_to_content
=
{
'row'
:
False
,
'column'
:
True
}
self
.
_fit_to_content
=
fit_to_content
...
...
@@ -74,6 +74,14 @@ class LabelDialog(QtWidgets.QDialog):
self
.
labelList
.
currentItemChanged
.
connect
(
self
.
labelSelected
)
self
.
edit
.
setListWidget
(
self
.
labelList
)
layout
.
addWidget
(
self
.
labelList
)
# label_flags
self
.
flags
=
flags
self
.
label_flags
=
None
if
flags
:
self
.
label_flags
=
QtWidgets
.
QVBoxLayout
()
for
flag
in
flags
:
self
.
label_flags
.
addWidget
(
QtWidgets
.
QCheckBox
(
flag
,
self
))
layout
.
addItem
(
self
.
label_flags
)
self
.
setLayout
(
layout
)
# completion
completer
=
QtWidgets
.
QCompleter
()
...
...
@@ -122,7 +130,24 @@ class LabelDialog(QtWidgets.QDialog):
text
=
text
.
trimmed
()
self
.
edit
.
setText
(
text
)
def
popUp
(
self
,
text
=
None
,
move
=
True
):
def
resetFlags
(
self
):
for
i
in
range
(
self
.
label_flags
.
count
()):
item
=
self
.
label_flags
.
itemAt
(
i
).
widget
()
item
.
setChecked
(
False
)
def
setFlags
(
self
,
flags
):
for
i
in
range
(
self
.
label_flags
.
count
()):
item
=
self
.
label_flags
.
itemAt
(
i
).
widget
()
item
.
setChecked
(
flags
[
item
.
text
()])
def
getFlags
(
self
):
flags
=
{}
for
i
in
range
(
self
.
label_flags
.
count
()):
item
=
self
.
label_flags
.
itemAt
(
i
).
widget
()
flags
[
item
.
text
()]
=
True
if
item
.
isChecked
()
else
False
return
flags
def
popUp
(
self
,
text
=
None
,
move
=
True
,
flags
=
None
):
if
self
.
_fit_to_content
[
'row'
]:
self
.
labelList
.
setMinimumHeight
(
self
.
labelList
.
sizeHintForRow
(
0
)
*
self
.
labelList
.
count
()
+
2
...
...
@@ -134,6 +159,10 @@ class LabelDialog(QtWidgets.QDialog):
# if text is None, the previous label in self.edit is kept
if
text
is
None
:
text
=
self
.
edit
.
text
()
if
flags
:
self
.
setFlags
(
flags
)
else
:
self
.
resetFlags
()
self
.
edit
.
setText
(
text
)
self
.
edit
.
setSelection
(
0
,
len
(
text
))
items
=
self
.
labelList
.
findItems
(
text
,
QtCore
.
Qt
.
MatchFixedString
)
...
...
@@ -146,4 +175,4 @@ class LabelDialog(QtWidgets.QDialog):
self
.
edit
.
setFocus
(
QtCore
.
Qt
.
PopupFocusReason
)
if
move
:
self
.
move
(
QtGui
.
QCursor
.
pos
())
return
self
.
edit
.
text
(
)
if
self
.
exec_
()
else
None
return
(
self
.
edit
.
text
(),
self
.
getFlags
()
)
if
self
.
exec_
()
else
None
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录