Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
Oil_Level_Recognition_System
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Oil_Level_Recognition_System
Commits
c3228c2c
Commit
c3228c2c
authored
Nov 30, 2025
by
Yuhaibo
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/Liuqingjun'
parents
46f8dd34
63a0675e
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
63 additions
and
58 deletions
+63
-58
datapreprocess_handler.py
handlers/datasetpage/datapreprocess_handler.py
+47
-1
crop_preview_panel.py
widgets/datasetpage/crop_preview_panel.py
+0
-1
datapreprocess_panel.py
widgets/datasetpage/datapreprocess_panel.py
+16
-56
No files found.
handlers/datasetpage/datapreprocess_handler.py
View file @
c3228c2c
...
@@ -211,6 +211,22 @@ class DrawableLabel(QtWidgets.QLabel):
...
@@ -211,6 +211,22 @@ class DrawableLabel(QtWidgets.QLabel):
if
rect_index
>=
0
:
if
rect_index
>=
0
:
# 创建右键菜单
# 创建右键菜单
menu
=
QtWidgets
.
QMenu
(
self
)
menu
=
QtWidgets
.
QMenu
(
self
)
menu
.
setStyleSheet
(
"""
QMenu {
background-color: #ffffff;
color: #000000;
border: 1px solid #dcdcdc;
padding: 4px;
}
QMenu::item {
background-color: transparent;
color: #000000;
padding: 6px 12px;
}
QMenu::item:selected {
background-color: #f0f0f0;
}
"""
)
# 添加删除动作
# 添加删除动作
delete_action
=
menu
.
addAction
(
f
"删除区域 {rect_index + 1}"
)
delete_action
=
menu
.
addAction
(
f
"删除区域 {rect_index + 1}"
)
...
@@ -1152,6 +1168,31 @@ class VideoPreviewWithControls(QtWidgets.QWidget):
...
@@ -1152,6 +1168,31 @@ class VideoPreviewWithControls(QtWidgets.QWidget):
)
)
class
VideoGridItemDelegate
(
QtWidgets
.
QStyledItemDelegate
):
"""
自定义委托,确保列表项在被选中时也能保持自身的前景颜色。
"""
def
paint
(
self
,
painter
,
option
,
index
):
opt
=
QtWidgets
.
QStyleOptionViewItem
(
option
)
foreground
=
index
.
data
(
Qt
.
ForegroundRole
)
if
foreground
:
brush
=
foreground
if
isinstance
(
foreground
,
QtGui
.
QColor
):
brush
=
QtGui
.
QBrush
(
foreground
)
for
group
in
(
QtGui
.
QPalette
.
Active
,
QtGui
.
QPalette
.
Inactive
,
QtGui
.
QPalette
.
Disabled
,
):
opt
.
palette
.
setBrush
(
group
,
QtGui
.
QPalette
.
Text
,
brush
)
opt
.
palette
.
setBrush
(
group
,
QtGui
.
QPalette
.
HighlightedText
,
brush
)
super
(
VideoGridItemDelegate
,
self
)
.
paint
(
painter
,
opt
,
index
)
class
DataPreprocessHandler
(
QtCore
.
QObject
):
class
DataPreprocessHandler
(
QtCore
.
QObject
):
"""
"""
数据预处理处理器
数据预处理处理器
...
@@ -1269,6 +1310,12 @@ class DataPreprocessHandler(QtCore.QObject):
...
@@ -1269,6 +1310,12 @@ class DataPreprocessHandler(QtCore.QObject):
# 替换普通Label为可绘制Label
# 替换普通Label为可绘制Label
self
.
_replaceVideoPreviewWithDrawable
()
self
.
_replaceVideoPreviewWithDrawable
()
# 让视频网格在选中时保持自定义颜色
if
hasattr
(
self
.
_panel
,
'video_grid'
):
self
.
_panel
.
video_grid
.
setItemDelegate
(
VideoGridItemDelegate
(
self
.
_panel
.
video_grid
)
)
# 初始化裁剪预览处理器
# 初始化裁剪预览处理器
self
.
_initCropPreviewHandler
()
self
.
_initCropPreviewHandler
()
...
@@ -1455,7 +1502,6 @@ class DataPreprocessHandler(QtCore.QObject):
...
@@ -1455,7 +1502,6 @@ class DataPreprocessHandler(QtCore.QObject):
QListWidget::item:selected {
QListWidget::item:selected {
background-color: #e3f2fd;
background-color: #e3f2fd;
border: 2px solid #0078d7;
border: 2px solid #0078d7;
color: #000;
}
}
QListWidget::item:hover {
QListWidget::item:hover {
background-color: #f5f5f5;
background-color: #f5f5f5;
...
...
widgets/datasetpage/crop_preview_panel.py
View file @
c3228c2c
...
@@ -468,7 +468,6 @@ class CropPreviewPanel(QtWidgets.QWidget):
...
@@ -468,7 +468,6 @@ class CropPreviewPanel(QtWidgets.QWidget):
# 添加等待提示
# 添加等待提示
placeholder_item
=
QtWidgets
.
QListWidgetItem
(
grid
)
placeholder_item
=
QtWidgets
.
QListWidgetItem
(
grid
)
placeholder_item
.
setText
(
"
\n\n
等待新的裁剪任务...
\n\n
监控已准备就绪"
)
placeholder_item
.
setTextAlignment
(
Qt
.
AlignCenter
)
placeholder_item
.
setTextAlignment
(
Qt
.
AlignCenter
)
placeholder_item
.
setFlags
(
Qt
.
NoItemFlags
)
# 不可选择
placeholder_item
.
setFlags
(
Qt
.
NoItemFlags
)
# 不可选择
...
...
widgets/datasetpage/datapreprocess_panel.py
View file @
c3228c2c
...
@@ -219,11 +219,13 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -219,11 +219,13 @@ class DataPreprocessPanel(QtWidgets.QWidget):
self
.
btn_add_folder
=
QtWidgets
.
QPushButton
(
"新增文件夹"
)
self
.
btn_add_folder
=
QtWidgets
.
QPushButton
(
"新增文件夹"
)
if
TextButtonStyleManager
:
if
TextButtonStyleManager
:
TextButtonStyleManager
.
applyToButton
(
self
.
btn_add_folder
,
"新增文件夹"
)
TextButtonStyleManager
.
applyToButton
(
self
.
btn_add_folder
,
"新增文件夹"
)
self
.
btn_add_folder
.
setVisible
(
False
)
button_layout
.
addWidget
(
self
.
btn_add_folder
)
button_layout
.
addWidget
(
self
.
btn_add_folder
)
self
.
btn_delete_folder
=
QtWidgets
.
QPushButton
(
"删除文件夹"
)
self
.
btn_delete_folder
=
QtWidgets
.
QPushButton
(
"删除文件夹"
)
if
TextButtonStyleManager
:
if
TextButtonStyleManager
:
TextButtonStyleManager
.
applyToButton
(
self
.
btn_delete_folder
,
"删除文件夹"
)
TextButtonStyleManager
.
applyToButton
(
self
.
btn_delete_folder
,
"删除文件夹"
)
self
.
btn_delete_folder
.
setVisible
(
False
)
button_layout
.
addWidget
(
self
.
btn_delete_folder
)
button_layout
.
addWidget
(
self
.
btn_delete_folder
)
layout
.
addLayout
(
button_layout
)
layout
.
addLayout
(
button_layout
)
...
@@ -297,7 +299,6 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -297,7 +299,6 @@ class DataPreprocessPanel(QtWidgets.QWidget):
QListWidget::item:selected {
QListWidget::item:selected {
background-color: #e3f2fd;
background-color: #e3f2fd;
border: 2px solid #0078d7;
border: 2px solid #0078d7;
color: #000;
}
}
QListWidget::item:hover {
QListWidget::item:hover {
background-color: #f5f5f5;
background-color: #f5f5f5;
...
@@ -569,6 +570,12 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -569,6 +570,12 @@ class DataPreprocessPanel(QtWidgets.QWidget):
return
panel
return
panel
def
_getDefaultCropFolder
(
self
):
"""获取裁剪结果默认保存路径"""
default_path
=
osp
.
join
(
get_project_root
(),
'database'
,
'Corp_picture'
)
os
.
makedirs
(
default_path
,
exist_ok
=
True
)
return
default_path
def
_loadCropConfig
(
self
):
def
_loadCropConfig
(
self
):
"""加载裁剪配置"""
"""加载裁剪配置"""
try
:
try
:
...
@@ -577,10 +584,7 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -577,10 +584,7 @@ class DataPreprocessPanel(QtWidgets.QWidget):
if
saved_path
:
if
saved_path
:
self
.
crop_path_edit
.
setText
(
saved_path
)
self
.
crop_path_edit
.
setText
(
saved_path
)
else
:
else
:
# 设置默认保存路径
self
.
crop_path_edit
.
setText
(
self
.
_getDefaultCropFolder
())
default_path
=
osp
.
join
(
get_project_root
(),
'database'
,
'Corp_picture'
)
os
.
makedirs
(
default_path
,
exist_ok
=
True
)
self
.
crop_path_edit
.
setText
(
default_path
)
saved_freq
=
settings
.
value
(
"frequency"
,
1
)
saved_freq
=
settings
.
value
(
"frequency"
,
1
)
try
:
try
:
...
@@ -864,19 +868,8 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -864,19 +868,8 @@ class DataPreprocessPanel(QtWidgets.QWidget):
self
.
folderSelected
.
emit
(
folder_path
)
self
.
folderSelected
.
emit
(
folder_path
)
def
_onFolderDoubleClicked
(
self
,
item
):
def
_onFolderDoubleClicked
(
self
,
item
):
"""文件夹被双击"""
"""需求调整:双击目录不执行任何操作"""
folder_name
=
item
.
data
(
Qt
.
UserRole
)
return
folder_path
=
osp
.
join
(
self
.
_root_path
,
folder_name
)
# 在系统文件管理器中打开
try
:
if
os
.
name
==
'nt'
:
# Windows
os
.
startfile
(
folder_path
)
elif
os
.
name
==
'posix'
:
# macOS, Linux
import
subprocess
subprocess
.
Popen
([
'open'
,
folder_path
])
except
Exception
as
e
:
pass
def
_onAddFolder
(
self
):
def
_onAddFolder
(
self
):
"""新增文件夹"""
"""新增文件夹"""
...
@@ -1031,15 +1024,8 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -1031,15 +1024,8 @@ class DataPreprocessPanel(QtWidgets.QWidget):
menu
=
QtWidgets
.
QMenu
(
self
)
menu
=
QtWidgets
.
QMenu
(
self
)
if
item
:
if
item
:
# 在文件夹上右键:显示删除选项
# 需求调整:不再提供右键删除入口,直接返回
action_delete
=
menu
.
addAction
(
"删除当前文件夹"
)
return
# 显示菜单并获取选择的动作
action
=
menu
.
exec_
(
self
.
folder_list
.
mapToGlobal
(
position
))
# 处理选择的动作
if
action
==
action_delete
:
self
.
_onDeleteFolder
()
else
:
else
:
# 在空白处右键:显示新建和刷新选项
# 在空白处右键:显示新建和刷新选项
action_new_folder
=
menu
.
addAction
(
"新建文件夹"
)
action_new_folder
=
menu
.
addAction
(
"新建文件夹"
)
...
@@ -1498,13 +1484,7 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -1498,13 +1484,7 @@ class DataPreprocessPanel(QtWidgets.QWidget):
# 获取当前路径
# 获取当前路径
current_path
=
self
.
crop_path_edit
.
text
()
.
strip
()
current_path
=
self
.
crop_path_edit
.
text
()
.
strip
()
if
not
current_path
or
not
osp
.
exists
(
current_path
):
if
not
current_path
or
not
osp
.
exists
(
current_path
):
# 使用默认路径
current_path
=
self
.
_getDefaultCropFolder
()
try
:
from
database.config
import
get_project_root
project_root
=
get_project_root
()
current_path
=
osp
.
join
(
project_root
,
'database'
,
'Corp_picture'
)
except
:
current_path
=
osp
.
expanduser
(
"~"
)
# 打开文件夹选择对话框
# 打开文件夹选择对话框
folder_path
=
QtWidgets
.
QFileDialog
.
getExistingDirectory
(
folder_path
=
QtWidgets
.
QFileDialog
.
getExistingDirectory
(
...
@@ -1520,28 +1500,8 @@ class DataPreprocessPanel(QtWidgets.QWidget):
...
@@ -1520,28 +1500,8 @@ class DataPreprocessPanel(QtWidgets.QWidget):
def
_onOpenCropFolder
(
self
):
def
_onOpenCropFolder
(
self
):
"""打开裁剪图片保存文件夹"""
"""打开裁剪图片保存文件夹"""
# 获取保存路径
# 无论当前设置为何,均打开默认的裁剪结果根目录
save_path
=
self
.
crop_path_edit
.
text
()
.
strip
()
save_path
=
self
.
_getDefaultCropFolder
()
if
not
save_path
:
# 如果没有设置路径,使用默认路径
try
:
from
database.config
import
get_project_root
save_path
=
osp
.
join
(
get_project_root
(),
'database'
,
'Corp_picture'
)
except
:
save_path
=
osp
.
join
(
osp
.
expanduser
(
"~"
),
'Corp_picture'
)
# 确保路径存在
if
not
osp
.
exists
(
save_path
):
try
:
os
.
makedirs
(
save_path
,
exist_ok
=
True
)
print
(
f
"[DataPreprocess] 创建文件夹: {save_path}"
)
except
Exception
as
e
:
QtWidgets
.
QMessageBox
.
warning
(
self
,
"警告"
,
f
"无法创建文件夹:
\n
{save_path}
\n\n
错误:{str(e)}"
)
return
# 打开文件夹
# 打开文件夹
try
:
try
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment