完成了<BCG质量标注>的UI界面

This commit is contained in:
Yorusora
2025-05-22 19:30:28 +08:00
parent a321dc5bd4
commit 196ee81a6f
8 changed files with 2491 additions and 52 deletions

View File

@ -3,12 +3,15 @@ from pathlib import Path
from traceback import format_exc
import matplotlib.pyplot as plt
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
from PySide6.QtGui import QColor
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication, QTableWidget, QTableWidgetItem
from matplotlib import gridspec
from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
from numpy import array, int64, append, zeros, full, where, nan, arange, float64, isnan, place, count_nonzero, all as np_all
from overrides import overrides
from pandas import read_csv, DataFrame
from scipy.signal import resample, iirfilter, lfilter
from yaml import dump, load, FullLoader
from func.utils.PublicFunc import PublicFunc
@ -68,6 +71,80 @@ class SettingWindow(QMainWindow):
self.sampID = sampID
self.config = None
self.__read_config__()
self.ui.spinBox_input_freq_signal_BCG.valueChanged.connect(self.__update_ui__)
self.ui.radioButton_30s_mode.clicked.connect(self.__update_mode__)
self.ui.radioButton_10s_mode.clicked.connect(self.__update_mode__)
self.ui.pushButton_confirm.clicked.connect(self.__write_config__)
self.ui.pushButton_cancel.clicked.connect(self.__rollback_config__)
self.ui.pushButton_cancel.clicked.connect(self.close)
def __read_config__(self):
if not Path(ConfigParams.BCG_QUALITY_LABEL_CONFIG_FILE_PATH).exists():
with open(ConfigParams.BCG_QUALITY_LABEL_CONFIG_FILE_PATH, "w") as f:
dump(ConfigParams.BCG_QUALITY_LABEL_CONFIG_NEW_CONTENT, f)
with open(ConfigParams.BCG_QUALITY_LABEL_CONFIG_FILE_PATH, "r") as f:
file_config = load(f.read(), Loader=FullLoader)
Config.update(file_config)
self.config = file_config
Config.update({
"Path": {
"Input_BCG": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_ORGBCG_ALIGNED /
Path(str(self.sampID)))),
"Input_Artifact": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_LABEL /
Path(str(self.sampID)))),
"Save": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_LABEL /
Path(str(self.sampID)))),
},
"Mode": "Undefined",
"DataPartNum": 0,
"CurrentDataIdx": 0,
"CurrentPartNum": 1,
"LongestContinuousTime": 0,
"ArtifactTimePercentage": 0
})
# 数据回显
self.ui.spinBox_input_freq_signal_BCG.setValue(Config["InputConfig"]["BCGFreq"])
self.ui.plainTextEdit_file_path_input_signal_BCG.setPlainText(Config["Path"]["Input_BCG"])
self.ui.plainTextEdit_file_path_input_artifact.setPlainText(Config["Path"]["Input_Artifact"])
self.ui.plainTextEdit_file_path_save.setPlainText(Config["Path"]["Save"])
def __write_config__(self):
# 从界面写入配置
Config["InputConfig"]["BCGFreq"] = self.ui.spinBox_input_freq_signal_BCG.value()
Config["Path"]["Input_BCG"] = self.ui.plainTextEdit_file_path_input_signal_BCG.toPlainText()
Config["Path"]["Input_Artifact"] = self.ui.plainTextEdit_file_path_input_artifact.toPlainText()
Config["Path"]["Save"] = self.ui.plainTextEdit_file_path_save.toPlainText()
# 保存配置到文件
self.config["InputConfig"]["BCGFreq"] = self.ui.spinBox_input_freq_signal_BCG.value()
with open(ConfigParams.BCG_QUALITY_LABEL_CONFIG_FILE_PATH, "w") as f:
dump(self.config, f)
self.close()
def __rollback_config__(self):
self.__read_config__()
def __update_ui__(self):
self.ui.plainTextEdit_file_path_input_signal_BCG.setPlainText(
str((Path(self.root_path) /
ConfigParams.PUBLIC_PATH_ORGBCG_ALIGNED /
Path(str(self.sampID)) /
Path(ConfigParams.BCG_SYNC +
str(self.ui.spinBox_input_freq_signal_BCG.value()) +
ConfigParams.ENDSWITH_TXT))))
def __update_mode__(self):
if self.ui.radioButton_30s_mode.isChecked():
Config["Mode"] = "30s"
elif self.ui.radioButton_10s_mode.isChecked():
Config["Mode"] = "10s"
class MainWindow_bcg_quality_label(QMainWindow):
@ -87,3 +164,588 @@ class MainWindow_bcg_quality_label(QMainWindow):
# 初始化进度条
self.progressbar = None
PublicFunc.add_progressbar(self)
#初始化画框
self.fig = None
self.canvas = None
self.figToolbar = None
self.gs = None
self.ax0 = None
self.line_data = None
self.msgBox = QMessageBox()
self.msgBox.setWindowTitle(Constants.MAINWINDOW_MSGBOX_TITLE)
@overrides
def show(self, root_path, sampID):
super().show()
self.root_path = root_path
self.sampID = sampID
self.setting = SettingWindow(root_path, sampID)
# 初始化画框
self.fig = plt.figure(figsize=(12, 9), dpi=100)
self.canvas = FigureCanvasQTAgg(self.fig)
self.figToolbar = NavigationToolbar2QT(self.canvas)
for action in self.figToolbar._actions.values():
action.setEnabled(False)
for action in self.figToolbar.actions():
if action.text() == "Subplots" or action.text() == "Customize":
self.figToolbar.removeAction(action)
self.ui.verticalLayout_canvas.addWidget(self.canvas)
self.ui.verticalLayout_canvas.addWidget(self.figToolbar)
self.gs = gridspec.GridSpec(1, 1, height_ratios=[1])
self.fig.subplots_adjust(top=0.98, bottom=0.05, right=0.98, left=0.1, hspace=0, wspace=0)
self.ax0 = self.fig.add_subplot(self.gs[0])
self.ax0.grid(True)
self.ax0.xaxis.set_major_formatter(ConfigParams.FORMATTER)
PublicFunc.__resetAllButton__(self, ButtonState)
self.ui.tableWidget_a1.setEditTriggers(QTableWidget.NoEditTriggers)
self.ui.tableWidget_a2.setEditTriggers(QTableWidget.NoEditTriggers)
self.ui.tableWidget_b1.setEditTriggers(QTableWidget.NoEditTriggers)
self.ui.tableWidget_b2.setEditTriggers(QTableWidget.NoEditTriggers)
self.ui.tableWidget_c.setEditTriggers(QTableWidget.NoEditTriggers)
self.ui.tableWidget_f.setEditTriggers(QTableWidget.NoEditTriggers)
self.ui.tableWidget_a1.horizontalHeader().setStretchLastSection(True)
self.ui.tableWidget_a2.horizontalHeader().setStretchLastSection(True)
self.ui.tableWidget_b1.horizontalHeader().setStretchLastSection(True)
self.ui.tableWidget_b2.horizontalHeader().setStretchLastSection(True)
self.ui.tableWidget_c.horizontalHeader().setStretchLastSection(True)
self.ui.tableWidget_f.horizontalHeader().setStretchLastSection(True)
self.ui.tableWidget_a1.setHorizontalHeaderLabels(['a1'])
self.ui.tableWidget_a2.setHorizontalHeaderLabels(['a2'])
self.ui.tableWidget_b1.setHorizontalHeaderLabels(['b1'])
self.ui.tableWidget_b2.setHorizontalHeaderLabels(['b2'])
self.ui.tableWidget_c.setHorizontalHeaderLabels(['c'])
self.ui.tableWidget_f.setHorizontalHeaderLabels(['None'])
self.ui.pushButton_input_setting.clicked.connect(self.setting.show)
self.ui.pushButton_input.clicked.connect(self.__slot_btn_input__)
@overrides
def closeEvent(self, event):
reply = QMessageBox.question(self, '确认', '确认退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
PublicFunc.__disableAllButton__(self, ButtonState)
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
QApplication.processEvents()
# 清空画框
if self.ax0 is not None:
self.ax0.clear()
# 释放资源
del self.data
self.fig.clf()
plt.close(self.fig)
self.deleteLater()
collect()
self.canvas = None
event.accept()
else:
event.ignore()
def __reset__(self):
ButtonState["Current"].update(ButtonState["Default"].copy())
def __plot__(self):
# 清空画框
self.reset_axes()
sender = self.sender()
if sender == self.ui.pushButton_input:
try:
artifact_type_seq = array([])
artifact_type_seq = artifact_type_seq.astype(int64)
if self.ui.checkBox_type1.isChecked():
artifact_type_seq = append(artifact_type_seq, 1)
if self.ui.checkBox_type2.isChecked():
artifact_type_seq = append(artifact_type_seq, 2)
if self.ui.checkBox_type3.isChecked():
artifact_type_seq = append(artifact_type_seq, 3)
if self.ui.checkBox_type4.isChecked():
artifact_type_seq = append(artifact_type_seq, 4)
if self.ui.checkBox_type5.isChecked():
artifact_type_seq = append(artifact_type_seq, 5)
# 是否显示去除工频噪声
if self.ui.checkBox_display_afterfilter.isChecked():
display_data = self.data.BCG_without_industrialFrequencyNoise
else:
display_data = self.data.BCG
if Config["Mode"] == "30s":
length = Config["InputConfig"]["UseFreq"] * 30
elif Config["Mode"] == "10s":
length = Config["InputConfig"]["UseFreq"] * 10
else:
raise ValueError("模式不存在")
# 绘制数据和体动
mask = array([arange(length), arange(length), arange(length), arange(length), arange(length), arange(length)])
mask = mask.astype(float64)
self.ax0.plot(
arange(Config["CurrentDataIdx"], Config["CurrentDataIdx"] + length),
display_data[Config["CurrentDataIdx"]: Config["CurrentDataIdx"] + length],
label=Constants.BCG_QUALITY_LABEL_PLOT_LABEL_SIGNAL, color=Constants.PLOT_COLOR_BLUE)
for i in artifact_type_seq:
mask[i] = self.data.artifact_mask[Config["CurrentDataIdx"]: Config["CurrentDataIdx"] + length] == i
mask[i] = (display_data[Config["CurrentDataIdx"]: Config["CurrentDataIdx"] + length] *
mask[i]).astype(float64)
place(mask[i], mask[i] == 0, nan)
self.ax0.plot(arange(Config["CurrentDataIdx"], Config["CurrentDataIdx"] + length), mask[i],
label=f"{Constants.BCG_QUALITY_LABEL_PLOT_LABEL_ARTIFACT}{i}", color=Constants.PLOT_COLOR_RED,
linestyle="-")
isArtifact = mask[~np_all(mask == range(0, length), axis=1)]
isArtifact = ~isnan(isArtifact).all(axis=0)
# 计算最长连续时间并更新信息
longest_continuous_max_length = 0
longest_continuous_current_length = 0
longest_continuous_end = 0
for index, value in enumerate(isArtifact):
if value == False:
longest_continuous_current_length += 1
if longest_continuous_current_length > longest_continuous_max_length:
longest_continuous_end = index
longest_continuous_max_length = max(longest_continuous_max_length,
longest_continuous_current_length)
else:
longest_continuous_current_length = 0
longest_continuous_start = longest_continuous_end - longest_continuous_max_length + 1
if self.ui.checkBox_highlight_longest_continuous.isChecked():
self.ax0.plot(
arange(Config["CurrentDataIdx"] + longest_continuous_start,
Config["CurrentDataIdx"] + longest_continuous_end),
display_data[
Config["CurrentDataIdx"] + longest_continuous_start: Config["CurrentDataIdx"] + longest_continuous_end],
label=Constants.BCG_QUALITY_LABEL_PLOT_LABEL_LONGEST_CONTINUOUS,
color=Constants.PLOT_COLOR_PURPLE, linestyle="-", zorder=3)
self.ui.lineEdit_longest_continuous_time.setText(
str(round(longest_continuous_max_length / int(Config["InputConfig"]["UseFreq"]), 2)) + "")
# 计算体动时间占比并更新信息
self.ui.lineEdit_artifact_time_percentage.setText(
str(round(100 * count_nonzero(isArtifact) / len(isArtifact), 2)) + "%")
self.ax0.legend(loc=Constants.PLOT_UPPER_RIGHT)
self.canvas.draw()
except Exception as e:
return Result().failure(info=Constants.DRAW_FAILURE + "\n" + format_exc())
return Result().success(info=Constants.DRAW_FINISHED)
else:
self.canvas.draw()
self.ax0.autoscale(False)
return Result().failure(info=Constants.DRAW_FAILURE)
def __slot_btn_input__(self):
PublicFunc.__disableAllButton__(self, ButtonState)
self.reset_axes()
self.canvas.draw()
self.data = Data()
# 导入数据
PublicFunc.progressbar_update(self, 1, 5, Constants.INPUTTING_DATA, 0)
result = self.data.open_file()
if not result.status:
PublicFunc.text_output(self.ui, "(1/5)" + result.info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/5)" + result.info, Constants.TIPS_TYPE_INFO)
# 获取存档
PublicFunc.progressbar_update(self, 2, 5, Constants.LOADING_ARCHIVE, 30)
result = self.data.get_archive()
if not result.status:
PublicFunc.text_output(self.ui, "(2/5)" + result.info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(2/5)" + result.info, Constants.TIPS_TYPE_INFO)
# 重采样
PublicFunc.progressbar_update(self, 3, 5, Constants.RESAMPLING_DATA, 40)
result = self.data.resample()
if not result.status:
PublicFunc.text_output(self.ui, "(3/5)" + result.info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(3/5)" + result.info, Constants.TIPS_TYPE_INFO)
# 数据预处理
PublicFunc.progressbar_update(self, 4, 5, Constants.PREPROCESSING_DATA, 70)
result = self.data.preprocess()
if not result.status:
PublicFunc.text_output(self.ui, "(4/5)" + result.info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(4/5)" + result.info, Constants.TIPS_TYPE_INFO)
# 绘图
PublicFunc.progressbar_update(self, 5, 5, Constants.DRAWING_DATA, 90)
result = self.__plot__()
if not result.status:
PublicFunc.text_output(self.ui, "(5/5)" + result.info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(5/5)" + result.info, Constants.TIPS_TYPE_INFO)
self.__reset__()
self.change_tablewidget_mode()
self.update_tableWidget()
self.update_status()
ButtonState["Current"]["pushButton_input_setting"] = True
ButtonState["Current"]["pushButton_input"] = True
ButtonState["Current"]["pushButton_invalid_signal_label"] = True
ButtonState["Current"]["pushButton_Ctype_signal_label"] = True
ButtonState["Current"]["pushButton_prev"] = True
ButtonState["Current"]["pushButton_next"] = True
ButtonState["Current"]["pushButton_save"] = True
ButtonState["Current"]["pushButton_a1"] = True
ButtonState["Current"]["pushButton_a2"] = True
ButtonState["Current"]["pushButton_b1"] = True
ButtonState["Current"]["pushButton_b2"] = True
ButtonState["Current"]["pushButton_c"] = True
ButtonState["Current"]["pushButton_f"] = True
for action in self.figToolbar._actions.values():
action.setEnabled(True)
PublicFunc.finish_operation(self, ButtonState)
def update_status(self):
if Config["Mode"] == "30s":
hour = int(((Config["CurrentDataIdx"] + (Config["InputConfig"]["UseFreq"] * 30)) / int(Config["InputConfig"]["UseFreq"])) // 3600)
min = int((((Config["CurrentDataIdx"] + (Config["InputConfig"]["UseFreq"] * 30)) / int(Config["InputConfig"]["UseFreq"])) % 3600) // 60)
sec = int((((Config["CurrentDataIdx"] + (Config["InputConfig"]["UseFreq"] * 30)) / int(Config["InputConfig"]["UseFreq"])) % 3600) % 60)
elif Config["Mode"] == "10s":
hour = int(((Config["CurrentDataIdx"] + (Config["InputConfig"]["UseFreq"] * 10)) / int(Config["InputConfig"]["UseFreq"])) // 3600)
min = int((((Config["CurrentDataIdx"] + (Config["InputConfig"]["UseFreq"] * 10)) / int(Config["InputConfig"]["UseFreq"])) % 3600) // 60)
sec = int((((Config["CurrentDataIdx"] + (Config["InputConfig"]["UseFreq"] * 10)) / int(Config["InputConfig"]["UseFreq"])) % 3600) % 60)
else:
raise ValueError("模式不存在")
self.ui.lineEdit_current_part_time.setText(str(hour) + "" + str(min) + "" + str(sec) + "")
self.ui.lineEdit_data_part_num.setText(str(Config["CurrentPartNum"]) + "/" + str(Config["DataPartNum"]))
def update_tableWidget(self):
if Config["Mode"] == "30s":
label_list = {
"label_a1": where(self.data.label == Constants.BCG_QUALITY_LABEL_30S_A1)[0] + 1,
"label_a2": where(self.data.label == Constants.BCG_QUALITY_LABEL_30S_A2)[0] + 1,
"label_b1": where(self.data.label == Constants.BCG_QUALITY_LABEL_30S_B1)[0] + 1,
"label_b2": where(self.data.label == Constants.BCG_QUALITY_LABEL_30S_B2)[0] + 1,
"label_c": where(self.data.label == Constants.BCG_QUALITY_LABEL_30S_C)[0] + 1,
"label_tobeLabeled": where(self.data.label == Constants.BCG_QUALITY_LABEL_TOBELABELED)[0] + 1
}
self.ui.tableWidget_a1.setRowCount(label_list["label_a1"].__len__())
self.ui.tableWidget_a2.setRowCount(label_list["label_a2"].__len__())
self.ui.tableWidget_b1.setRowCount(label_list["label_b1"].__len__())
self.ui.tableWidget_b2.setRowCount(label_list["label_b2"].__len__())
self.ui.tableWidget_c.setRowCount(label_list["label_c"].__len__())
self.ui.tableWidget_f.setRowCount(label_list["label_tobeLabeled"].__len__())
for label_name, label in label_list.items():
if label_name == "label_a1":
tableWidget = self.ui.tableWidget_a1
elif label_name == "label_a2":
tableWidget = self.ui.tableWidget_a2
elif label_name == "label_b1":
tableWidget = self.ui.tableWidget_b1
elif label_name == "label_b2":
tableWidget = self.ui.tableWidget_b2
elif label_name == "label_c":
tableWidget = self.ui.tableWidget_c
elif label_name == "label_tobeLabeled":
tableWidget = self.ui.tableWidget_f
else:
raise ValueError("标签名不存在")
for row, value in enumerate(label):
item = QTableWidgetItem(str(value).strip())
tableWidget.setItem(row, 0, item)
if (self.data.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_REMARK][
value - 1] != Constants.STRING_IS_EMPTY and
self.data.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_REMARK][value - 1] is not nan):
item = tableWidget.item(row, 0)
item.setBackground(QColor(255, 200, 200))
else:
item = tableWidget.item(row, 0)
item.setBackground(QColor(255, 255, 255))
self.ui.tableWidget_a1.verticalScrollBar().setValue(self.ui.tableWidget_a1.verticalScrollBar().maximum())
self.ui.tableWidget_a2.verticalScrollBar().setValue(self.ui.tableWidget_a2.verticalScrollBar().maximum())
self.ui.tableWidget_b1.verticalScrollBar().setValue(self.ui.tableWidget_b2.verticalScrollBar().maximum())
self.ui.tableWidget_c.verticalScrollBar().setValue(self.ui.tableWidget_c.verticalScrollBar().maximum())
self.ui.tableWidget_f.verticalScrollBar().setValue(self.ui.tableWidget_f.verticalScrollBar().maximum())
elif Config["Mode"] == "10s":
label_list = {
"label_a": where(self.data.label == Constants.BCG_QUALITY_LABEL_10S_A)[0] + 1,
"label_b": where(self.data.label == Constants.BCG_QUALITY_LABEL_10S_B)[0] + 1,
"label_c": where(self.data.label == Constants.BCG_QUALITY_LABEL_10S_C)[0] + 1,
"label_tobeLabeled": where(self.data.label == Constants.BCG_QUALITY_LABEL_TOBELABELED)[0] + 1
}
self.ui.tableWidget_a1.setRowCount(label_list["label_a"].__len__())
self.ui.tableWidget_b1.setRowCount(label_list["label_b"].__len__())
self.ui.tableWidget_c.setRowCount(label_list["label_c"].__len__())
self.ui.tableWidget_f.setRowCount(label_list["label_tobeLabeled"].__len__())
for label_name, label in label_list.items():
if label_name == "label_a":
tableWidget = self.ui.tableWidget_a1
elif label_name == "label_b":
tableWidget = self.ui.tableWidget_b1
elif label_name == "label_c":
tableWidget = self.ui.tableWidget_c
elif label_name == "label_tobeLabeled":
tableWidget = self.ui.tableWidget_f
else:
raise ValueError("标签名不存在")
for row, value in enumerate(label):
item = QTableWidgetItem(str(value).strip())
tableWidget.setItem(row, 0, item)
if (self.data.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_REMARK][
value - 1] != Constants.STRING_IS_EMPTY and
self.data.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_REMARK][value - 1] is not nan):
item = tableWidget.item(row, 0)
item.setBackground(QColor(255, 200, 200))
else:
item = tableWidget.item(row, 0)
item.setBackground(QColor(255, 255, 255))
self.ui.tableWidget_a1.verticalScrollBar().setValue(self.ui.tableWidget_a1.verticalScrollBar().maximum())
self.ui.tableWidget_b1.verticalScrollBar().setValue(self.ui.tableWidget_b1.verticalScrollBar().maximum())
self.ui.tableWidget_c.verticalScrollBar().setValue(self.ui.tableWidget_c.verticalScrollBar().maximum())
else:
raise ValueError("模式不存在")
def reset_axes(self):
if self.ax0 is not None:
self.ax0.clear()
self.ax0.grid(True)
self.ax0.xaxis.set_major_formatter(ConfigParams.FORMATTER)
def change_tablewidget_mode(self):
if Config["Mode"] == "10s":
self.ui.pushButton_a1.show()
self.ui.pushButton_a2.hide()
self.ui.pushButton_b1.show()
self.ui.pushButton_b2.hide()
self.ui.pushButton_c.show()
self.ui.pushButton_f.show()
self.ui.pushButton_a1.setText("a")
self.ui.pushButton_a2.setText("a2")
self.ui.pushButton_b1.setText("b")
self.ui.pushButton_b2.setText("b2")
self.ui.pushButton_c.setText("c")
self.ui.pushButton_f.setText("删除")
self.ui.tableWidget_a1.show()
self.ui.tableWidget_a2.hide()
self.ui.tableWidget_b1.show()
self.ui.tableWidget_b2.hide()
self.ui.tableWidget_c.show()
self.ui.tableWidget_f.show()
self.ui.tableWidget_a1.setHorizontalHeaderLabels(['a'])
self.ui.tableWidget_a2.setHorizontalHeaderLabels(['a2'])
self.ui.tableWidget_b1.setHorizontalHeaderLabels(['b'])
self.ui.tableWidget_b2.setHorizontalHeaderLabels(['b2'])
self.ui.tableWidget_c.setHorizontalHeaderLabels(['c'])
self.ui.tableWidget_f.setHorizontalHeaderLabels(['None'])
elif Config["Mode"] == "30s":
self.ui.pushButton_a1.show()
self.ui.pushButton_a2.show()
self.ui.pushButton_b1.show()
self.ui.pushButton_b2.show()
self.ui.pushButton_c.show()
self.ui.pushButton_f.show()
self.ui.pushButton_a1.setText("a1")
self.ui.pushButton_a2.setText("a2")
self.ui.pushButton_b1.setText("b1")
self.ui.pushButton_b2.setText("b2")
self.ui.pushButton_c.setText("c")
self.ui.pushButton_f.setText("删除")
self.ui.tableWidget_a1.show()
self.ui.tableWidget_a2.show()
self.ui.tableWidget_b1.show()
self.ui.tableWidget_b2.show()
self.ui.tableWidget_c.show()
self.ui.tableWidget_f.show()
self.ui.tableWidget_a1.setHorizontalHeaderLabels(['a1'])
self.ui.tableWidget_a2.setHorizontalHeaderLabels(['a2'])
self.ui.tableWidget_b1.setHorizontalHeaderLabels(['b1'])
self.ui.tableWidget_b2.setHorizontalHeaderLabels(['b2'])
self.ui.tableWidget_c.setHorizontalHeaderLabels(['c'])
self.ui.tableWidget_f.setHorizontalHeaderLabels(['None'])
elif Config["Mode"] == "Undefined":
return False
else:
raise ValueError("模式不存在")
return True
class Data():
def __init__(self):
self.BCG = None
self.BCG_without_industrialFrequencyNoise = None
self.Artifact_a = None
self.df_label = None
self.label = None
self.artifact_number = array([]).astype(int64)
self.artifact_type = array([]).astype(int64)
self.artifact_mask = array([]).astype(int64)
def open_file(self):
if Path(Config["Path"]["Input_BCG"]).is_file():
Config["Path"]["Input_BCG"] = str(Path(Config["Path"]["Input_BCG"]).parent)
if Path(Config["Path"]["Input_Artifact"]).is_file():
Config["Path"]["Input_Artifact"] = str(Path(Config["Path"]["Input_Artifact"]).parent)
if Path(Config["Path"]["Save"]).is_file():
Config["Path"]["Save"] = str(Path(Config["Path"]["Save"]).parent)
result = PublicFunc.examine_file(Config["Path"]["Input_BCG"], ConfigParams.BCG_SYNC, ConfigParams.ENDSWITH_TXT)
if result.status:
Config["Path"]["Input_BCG"] = result.data["path"]
Config["InputConfig"]["ThoFreq"] = result.data["freq"]
else:
return result
result = PublicFunc.examine_file(Config["Path"]["Input_Artifact"], ConfigParams.ARTIFACT_A, ConfigParams.ENDSWITH_TXT)
if result.status:
Config["Path"]["Input_Artifact"] = result.data["path"]
else:
return result
if Config["Mode"] == "30s":
Config["Path"]["Save"] = str(
Path(Config["Path"]["Save"]) / Path(ConfigParams.SQ_LABEL_30S + ConfigParams.ENDSWITH_CSV))
elif Config["Mode"] == "10s":
Config["Path"]["Save"] = str(
Path(Config["Path"]["Save"]) / Path(ConfigParams.SQ_LABEL_10S + ConfigParams.ENDSWITH_CSV))
elif Config["Mode"] == "Undefined":
return Result().failure(info=Constants.INPUT_FAILURE + Constants.FAILURE_REASON["Mode_Undefined"])
else:
raise ValueError("模式不存在")
try:
self.BCG = read_csv(Config["Path"]["Input_BCG"],
encoding=ConfigParams.UTF8_ENCODING,
header=None).to_numpy().reshape(-1)
self.Artifact_a = read_csv(Config["Path"]["Input_Artifact"],
encoding=ConfigParams.UTF8_ENCODING,
header=None).to_numpy().reshape(-1)
except Exception as e:
return Result().failure(info=Constants.INPUT_FAILURE + Constants.FAILURE_REASON["Open_Data_Exception"] + "\n" + format_exc())
try:
if Config["Mode"] == "30s":
Config["DataPartNum"] = len(self.BCG) // (Config["InputConfig"]["UseFreq"] * 30)
elif Config["Mode"] == "10s":
Config["DataPartNum"] = len(self.BCG) // (Config["InputConfig"]["UseFreq"] * 10)
else:
raise ValueError("模式不存在")
if Config["DataPartNum"] == 0:
return Result().failure(info=Constants.INPUT_FAILURE + Constants.FAILURE_REASON["Data_Length_Not_Correct"])
except Exception as e:
return Result().failure(info=Constants.INPUT_FAILURE + Constants.FAILURE_REASON["Open_Data_Exception"] + "\n" + format_exc())
try:
# 检查体动标签正确性,长度
PublicFunc.examine_artifact(self.Artifact_a)
# 定义绘制体动所需要的数组
artifact_start = array([])
artifact_start = artifact_start.astype(int64)
artifact_end = array([])
artifact_end = artifact_end.astype(int64)
for i in range(0, len(self.Artifact_a), 4):
self.artifact_number = append(self.artifact_number, self.Artifact_a[i])
for i in range(1, len(self.Artifact_a), 4):
self.artifact_type = append(self.artifact_type, self.Artifact_a[i])
for i in range(2, len(self.Artifact_a), 4):
artifact_start = append(artifact_start, self.Artifact_a[i])
for i in range(3, len(self.Artifact_a), 4):
artifact_end = append(artifact_end, self.Artifact_a[i])
self.artifact_mask = zeros(len(self.BCG))
for i in range(0, len(self.artifact_number)):
self.artifact_mask[artifact_start[i]: artifact_end[i] + 1] = 1
except Exception as e:
return Result().failure(info=Constants.INPUT_FAILURE +
Constants.FAILURE_REASON["Get_Artifact_Format_Exception"] + "\n" + format_exc())
return Result().success(info=Constants.INPUT_FINISHED)
def get_archive(self):
if Config["Mode"] == "30s":
filename = ConfigParams.SQ_LABEL_30S
elif Config["Mode"] == "10s":
filename = ConfigParams.SQ_LABEL_10S
else:
raise ValueError("模式不存在")
if not Path(Config["Path"]["Save"]).exists():
self.label = full(Config["DataPartNum"], Constants.BCG_QUALITY_LABEL_TOBELABELED)
self.df_label = DataFrame(columns=[Constants.BCG_QUALITY_LABEL_COLUMN_LABEL, Constants.BCG_QUALITY_LABEL_COLUMN_REMARK])
self.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_LABEL] = self.label
self.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_REMARK] = Constants.STRING_IS_EMPTY
self.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_LABEL] = self.df_label[
Constants.BCG_QUALITY_LABEL_COLUMN_LABEL].astype(str)
self.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_REMARK] = self.df_label[
Constants.BCG_QUALITY_LABEL_COLUMN_REMARK].astype(str)
return Result().success(info=filename + "" + Constants.ARCHIVE_NOT_EXIST)
else:
self.df_label = read_csv(Config["Path"]["Save"],
encoding=ConfigParams.GBK_ENCODING)
self.label = self.df_label[Constants.BCG_QUALITY_LABEL_COLUMN_LABEL].astype(str)
return Result().success(info=filename + "" + Constants.ARCHIVE_EXIST)
def resample(self):
if self.BCG is None:
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
try:
if Config["InputConfig"]["BCGFreq"] != Config["InputConfig"]["UseFreq"]:
self.BCG = resample(self.BCG,
int(len(self.BCG) *
(Config["InputConfig"]["UseFreq"] / Config["InputConfig"]["BCGFreq"])))
else:
return Result().success(info=Constants.RESAMPLE_NO_NEED)
except Exception as e:
Result().failure(info=Constants.RESAMPLE_FAILURE +
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
return Result().success(info=Constants.RESAMPLE_FINISHED)
def preprocess(self):
if self.BCG is None:
return Result().failure(info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
try:
self.BCG_without_industrialFrequencyNoise = Data.wipe_industrialFrequencyNoise(self.BCG, int(Config["InputConfig"]["UseFreq"]))
except Exception as e:
return Result().failure(info=Constants.PREPROCESS_FAILURE +
Constants.FAILURE_REASON["Preprocess_Exception"] + "\n" + format_exc())
return Result().success(info=Constants.PREPROCESS_FINISHED)
@staticmethod
def wipe_industrialFrequencyNoise(data, fs):
# 设计带阻滤波器Notch Filter来滤除49-51Hz的噪声
nyq = 0.5 * fs # 奈奎斯特频率
low = 49 / nyq
high = 51 / nyq
b, a = iirfilter(4, [low, high], btype='bandstop', ftype='butter') # 4阶巴特沃斯带阻滤波器
return lfilter(b, a, data)

View File

@ -286,7 +286,6 @@ class MainWindow_resp_quality_label(QMainWindow):
self.ui.pushButton_invalid.clicked.connect(self.__slot_btn_label__)
self.ui.pushButton_reset.clicked.connect(self.__slot_btn_label__)
self.ui.pushButton_save.clicked.connect(self.__slot_btn_save__)
self.ui.lineEdit_filter_labeled.textChanged.connect(self.__slot_lineEdit_filter__)
self.ui.lineEdit_filter_tobelabeled.textChanged.connect(self.__slot_lineEdit_filter__)
self.ui.doubleSpinBox_quality_threshold1.valueChanged.connect(self.update_config)

View File

@ -70,6 +70,8 @@ class ConfigParams:
SA_LABEL_ADD: str = "SA Label_add"
RESP_QUALITY_LABEL: str = "Resp_quality_label"
THO_PEAK: str = "Tho_peak_"
SQ_LABEL_10S: str = "SQ_label_10s"
SQ_LABEL_30S: str = "SQ_label_30s"
# 数据粗同步
APPROXIMATELY_ALIGN_CONFIG_FILE_PATH: str = "./config/Config_approximately_align.yaml"
@ -252,7 +254,14 @@ class ConfigParams:
ARTIFACT_LABEL_LABEL_TRANSPARENCY: float = 0.3
ARTIFACT_LABEL_ACTION_LABEL_ARTIFACT_SHORTCUT_KEY: str = "Z"
# BCG质量标注
# BCG质量标注
BCG_QUALITY_LABEL_CONFIG_FILE_PATH: str = "./config/Config_bcg_quality_label.yaml"
BCG_QUALITY_LABEL_CONFIG_NEW_CONTENT: dict = {
"InputConfig": {
"BCGFreq": 1000,
"UseFreq": 1000
}
}
# 呼吸可用性及间期标注
RESP_QUALITY_LABEL_CONFIG_FILE_PATH: str = "./config/Config_resp_quality_label.yaml"
@ -311,19 +320,6 @@ class ConfigParams:
SA_LABEL_RADIOBUTTON_2_CLASS_SHORTCUT_KEY: str = "I"
SA_LABEL_RADIOBUTTON_3_CLASS_SHORTCUT_KEY: str = "O"
# 质量打标
BCG_QUALITY_LABEL_INPUT_BCG_FILENAME: str = "BCG_sync_"
BCG_QUALITY_LABEL_INPUT_ARTIFACT_FILENAME: str = "Artifact_a"
BCG_QUALITY_LABEL_SAVE_FILENAME: str = "SQ_label_"
BCG_QUALITY_LABEL_INPUT_DEFAULT_FS: int = 1000
BCG_QUALITY_LABEL_SAVE_MODE_10S: str = "10s"
BCG_QUALITY_LABEL_SAVE_MODE_30S: str = "30s"
BCG_QUALITY_LABEL_MODE_10S_LENGTH = 10 * BCG_QUALITY_LABEL_INPUT_DEFAULT_FS
BCG_QUALITY_LABEL_MODE_30S_LENGTH = 30 * BCG_QUALITY_LABEL_INPUT_DEFAULT_FS
# 禁止实例化
def __new__(cls):
raise TypeError("Constants class cannot be instantiated")

View File

@ -106,6 +106,7 @@ class Constants:
"Data_Length_not_Correct": "orgBcg和BCG长度不匹配",
"Artifact_Format_Not_Correct": "(体动长度或格式不正确)",
"Data_Length_Not_Correct": "(信号长度不正确)",
"Mode_Undefined": "(模式未选择)",
"Open_Data_Exception": "(打开数据异常)",
"Process_Exception": "(处理异常)",
@ -381,7 +382,21 @@ class Constants:
background-color: #00ff00; /* 鼠标悬停时的背景颜色 */
}"""
# BCG质量标注
# BCG质量标注
BCG_QUALITY_LABEL_COLUMN_LABEL: str = "label"
BCG_QUALITY_LABEL_COLUMN_REMARK: str = "remark"
BCG_QUALITY_LABEL_PLOT_LABEL_SIGNAL: str = "BCG"
BCG_QUALITY_LABEL_PLOT_LABEL_ARTIFACT: str = "Artifact"
BCG_QUALITY_LABEL_PLOT_LABEL_LONGEST_CONTINUOUS: str = "Longest_Continuous"
BCG_QUALITY_LABEL_10S_A: str = "a"
BCG_QUALITY_LABEL_10S_B: str = "b"
BCG_QUALITY_LABEL_10S_C: str = "c"
BCG_QUALITY_LABEL_30S_A1: str = "a"
BCG_QUALITY_LABEL_30S_A2: str = "b"
BCG_QUALITY_LABEL_30S_B1: str = "c"
BCG_QUALITY_LABEL_30S_B2: str = "d"
BCG_QUALITY_LABEL_30S_C: str = "e"
BCG_QUALITY_LABEL_TOBELABELED: str = "f"
# 呼吸可用性及间期标注
@ -464,19 +479,6 @@ class Constants:
# 质量打标
BCG_QUALITY_LABEL_FILES_NOT_FOUND: str = f"无法找到{ConfigParams.BCG_QUALITY_LABEL_INPUT_BCG_FILENAME}{ConfigParams.ENDSWITH_TXT}{ConfigParams.BCG_QUALITY_LABEL_INPUT_ARTIFACT_FILENAME}{ConfigParams.ENDSWITH_TXT},无法执行<BCG的质量标注>"
BCG_QUALITY_LABEL_FILES_FOUND: str = f"找到{ConfigParams.BCG_QUALITY_LABEL_INPUT_BCG_FILENAME}{ConfigParams.ENDSWITH_TXT}{ConfigParams.BCG_QUALITY_LABEL_INPUT_ARTIFACT_FILENAME}{ConfigParams.ENDSWITH_TXT}"
BCG_QUALITY_LABEL_HISTORICAL_SAVE_FOUND: str = f"找到历史存档文件{ConfigParams.BCG_QUALITY_LABEL_SAVE_FILENAME}{ConfigParams.BCG_QUALITY_LABEL_SAVE_MODE_10S}{ConfigParams.ENDSWITH_CSV}{ConfigParams.BCG_QUALITY_LABEL_SAVE_FILENAME}{ConfigParams.BCG_QUALITY_LABEL_SAVE_MODE_30S}{ConfigParams.ENDSWITH_CSV},已成功读取"
BCG_QUALITY_LABEL_MODE_UNSELECTED: str = "显示模式未选择"
BCG_QUALITY_LABEL_INPUT_SIGNAL_FAILURE: str = "导入信号失败,请检查信号长度"
BCG_QUALITY_LABEL_INPUT_ARTIFACT_FAILURE_FORMAT: str = "导入体动失败,请检查体动标签格式"
BCG_QUALITY_LABEL_INPUT_ARTIFACT_FAILURE_LENGTH: str = "导入体动失败请检查体动长度是否为4的倍数"
BCG_QUALITY_LABEL_RUNNING: str = "开始执行任务<BCG的质量评估标注>"
BCG_QUALITY_LABEL_10S_MODE: str = f"{ConfigParams.BCG_QUALITY_LABEL_SAVE_MODE_10S}_MODE"
BCG_QUALITY_LABEL_30S_MODE: str = f"{ConfigParams.BCG_QUALITY_LABEL_SAVE_MODE_30S}_MODE"
BCG_QUALITY_LABEL_COLUMN_LABEL: str = "label"
BCG_QUALITY_LABEL_COLUMN_REMARK: str = "remark"
BCG_QUALITY_LABEL_VIEWING_THE_FIRST_PART: str = "你正在查看第1段信号"
BCG_QUALITY_LABEL_VIEWING_THE_LAST_PART: str = "你正在查看最后1段信号"
BCG_QUALITY_LABEL_VIEWING_THE_FIRST_PART_UNLABELED: str = "前面的片段都被打标将跳转至第1段信号"
@ -491,27 +493,6 @@ class Constants:
BCG_QUALITY_LABEL_LABEL_ALL_TO_TYPE_C: str = "已将所有片段标记为类型C"
BCG_QUALITY_LABEL_LABEL_ARTIFACT_TO_TYPE_C_QUESTION_CONTENT: str = "你确定要将所有带有体动的片段标记为类型C"
BCG_QUALITY_LABEL_LABEL_ARTIFACT_TO_TYPE_C: str = "已将所有带有体动的片段标记为类型C"
BCG_QUALITY_LABEL_PLOT_LABEL_SIGNAL: str = "BCG"
BCG_QUALITY_LABEL_PLOT_LABEL_ARTIFACT: str = "Artifact"
BCG_QUALITY_LABEL_PLOT_LABEL_LONGEST_CONTINUOUS: str = "Longest_Continuous"
BCG_QUALITY_LABEL_10S_A: str = "a"
BCG_QUALITY_LABEL_10S_B: str = "b"
BCG_QUALITY_LABEL_10S_C: str = "c"
BCG_QUALITY_LABEL_10S_A_LIST: str = "label_a"
BCG_QUALITY_LABEL_10S_B_LIST: str = "label_b"
BCG_QUALITY_LABEL_10S_C_LIST: str = "label_c"
BCG_QUALITY_LABEL_30S_A1: str = "a"
BCG_QUALITY_LABEL_30S_A2: str = "b"
BCG_QUALITY_LABEL_30S_B1: str = "c"
BCG_QUALITY_LABEL_30S_B2: str = "d"
BCG_QUALITY_LABEL_30S_C: str = "e"
BCG_QUALITY_LABEL_30S_A1_LIST: str = "label_a1"
BCG_QUALITY_LABEL_30S_A2_LIST: str = "label_a2"
BCG_QUALITY_LABEL_30S_B1_LIST: str = "label_b1"
BCG_QUALITY_LABEL_30S_B2_LIST: str = "label_b2"
BCG_QUALITY_LABEL_30S_C_LIST: str = "label_c"
BCG_QUALITY_LABEL_tobeLabeled: str = "f"
BCG_QUALITY_LABEL_tobeLabeled_LIST: str = "label_tobeLabeled"
BCG_QUALITY_LABEL_LABELBTN_STYLE: str = """
QPushButton {
background-color: orange; /* 设置背景颜色 */

View File

@ -0,0 +1,552 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'MainWindow_bcg_quality_label.ui'
##
## Created by: Qt User Interface Compiler version 6.8.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox,
QHBoxLayout, QHeaderView, QLabel, QLineEdit,
QMainWindow, QPushButton, QSizePolicy, QSpacerItem,
QStatusBar, QTableWidget, QTableWidgetItem, QTextBrowser,
QVBoxLayout, QWidget)
class Ui_MainWindow_bcg_quality_label(object):
def setupUi(self, MainWindow_bcg_quality_label):
if not MainWindow_bcg_quality_label.objectName():
MainWindow_bcg_quality_label.setObjectName(u"MainWindow_bcg_quality_label")
MainWindow_bcg_quality_label.resize(1920, 1080)
self.centralwidget = QWidget(MainWindow_bcg_quality_label)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName(u"gridLayout")
self.groupBox_canvas = QGroupBox(self.centralwidget)
self.groupBox_canvas.setObjectName(u"groupBox_canvas")
font = QFont()
font.setPointSize(10)
self.groupBox_canvas.setFont(font)
self.verticalLayout = QVBoxLayout(self.groupBox_canvas)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout_canvas = QVBoxLayout()
self.verticalLayout_canvas.setObjectName(u"verticalLayout_canvas")
self.verticalLayout.addLayout(self.verticalLayout_canvas)
self.gridLayout.addWidget(self.groupBox_canvas, 0, 1, 1, 1)
self.groupBox_left = QGroupBox(self.centralwidget)
self.groupBox_left.setObjectName(u"groupBox_left")
self.groupBox_left.setFont(font)
self.verticalLayout_2 = QVBoxLayout(self.groupBox_left)
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton_input_setting = QPushButton(self.groupBox_left)
self.pushButton_input_setting.setObjectName(u"pushButton_input_setting")
sizePolicy = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_input_setting.sizePolicy().hasHeightForWidth())
self.pushButton_input_setting.setSizePolicy(sizePolicy)
font1 = QFont()
font1.setPointSize(12)
self.pushButton_input_setting.setFont(font1)
self.horizontalLayout.addWidget(self.pushButton_input_setting)
self.pushButton_input = QPushButton(self.groupBox_left)
self.pushButton_input.setObjectName(u"pushButton_input")
sizePolicy.setHeightForWidth(self.pushButton_input.sizePolicy().hasHeightForWidth())
self.pushButton_input.setSizePolicy(sizePolicy)
self.pushButton_input.setFont(font1)
self.horizontalLayout.addWidget(self.pushButton_input)
self.verticalLayout_2.addLayout(self.horizontalLayout)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_2.addItem(self.verticalSpacer)
self.groupBox_status = QGroupBox(self.groupBox_left)
self.groupBox_status.setObjectName(u"groupBox_status")
self.gridLayout_3 = QGridLayout(self.groupBox_status)
self.gridLayout_3.setObjectName(u"gridLayout_3")
self.label_5 = QLabel(self.groupBox_status)
self.label_5.setObjectName(u"label_5")
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
self.label_5.setSizePolicy(sizePolicy1)
self.label_5.setFont(font1)
self.gridLayout_3.addWidget(self.label_5, 0, 0, 1, 1)
self.label_6 = QLabel(self.groupBox_status)
self.label_6.setObjectName(u"label_6")
sizePolicy1.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
self.label_6.setSizePolicy(sizePolicy1)
self.label_6.setFont(font1)
self.gridLayout_3.addWidget(self.label_6, 1, 0, 1, 1)
self.label_12 = QLabel(self.groupBox_status)
self.label_12.setObjectName(u"label_12")
sizePolicy1.setHeightForWidth(self.label_12.sizePolicy().hasHeightForWidth())
self.label_12.setSizePolicy(sizePolicy1)
self.label_12.setFont(font1)
self.gridLayout_3.addWidget(self.label_12, 2, 0, 1, 1)
self.label_13 = QLabel(self.groupBox_status)
self.label_13.setObjectName(u"label_13")
sizePolicy1.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
self.label_13.setSizePolicy(sizePolicy1)
self.label_13.setFont(font1)
self.gridLayout_3.addWidget(self.label_13, 3, 0, 1, 1)
self.lineEdit_artifact_time_percentage = QLineEdit(self.groupBox_status)
self.lineEdit_artifact_time_percentage.setObjectName(u"lineEdit_artifact_time_percentage")
self.lineEdit_artifact_time_percentage.setEnabled(False)
self.lineEdit_artifact_time_percentage.setFont(font1)
self.gridLayout_3.addWidget(self.lineEdit_artifact_time_percentage, 3, 1, 1, 1)
self.lineEdit_longest_continuous_time = QLineEdit(self.groupBox_status)
self.lineEdit_longest_continuous_time.setObjectName(u"lineEdit_longest_continuous_time")
self.lineEdit_longest_continuous_time.setEnabled(False)
self.lineEdit_longest_continuous_time.setFont(font1)
self.gridLayout_3.addWidget(self.lineEdit_longest_continuous_time, 2, 1, 1, 1)
self.lineEdit_data_part_num = QLineEdit(self.groupBox_status)
self.lineEdit_data_part_num.setObjectName(u"lineEdit_data_part_num")
self.lineEdit_data_part_num.setEnabled(False)
self.lineEdit_data_part_num.setFont(font1)
self.gridLayout_3.addWidget(self.lineEdit_data_part_num, 1, 1, 1, 1)
self.lineEdit_current_part_time = QLineEdit(self.groupBox_status)
self.lineEdit_current_part_time.setObjectName(u"lineEdit_current_part_time")
self.lineEdit_current_part_time.setEnabled(False)
self.lineEdit_current_part_time.setFont(font1)
self.gridLayout_3.addWidget(self.lineEdit_current_part_time, 0, 1, 1, 1)
self.verticalLayout_2.addWidget(self.groupBox_status)
self.verticalSpacer_5 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_2.addItem(self.verticalSpacer_5)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.groupBox_artifact_type = QGroupBox(self.groupBox_left)
self.groupBox_artifact_type.setObjectName(u"groupBox_artifact_type")
self.gridLayout_6 = QGridLayout(self.groupBox_artifact_type)
self.gridLayout_6.setObjectName(u"gridLayout_6")
self.checkBox_allin = QCheckBox(self.groupBox_artifact_type)
self.checkBox_allin.setObjectName(u"checkBox_allin")
font2 = QFont()
font2.setPointSize(20)
self.checkBox_allin.setFont(font2)
self.checkBox_allin.setChecked(True)
self.gridLayout_6.addWidget(self.checkBox_allin, 0, 1, 1, 1)
self.checkBox_type1 = QCheckBox(self.groupBox_artifact_type)
self.checkBox_type1.setObjectName(u"checkBox_type1")
self.checkBox_type1.setFont(font1)
self.checkBox_type1.setChecked(True)
self.gridLayout_6.addWidget(self.checkBox_type1, 0, 2, 1, 1)
self.checkBox_type2 = QCheckBox(self.groupBox_artifact_type)
self.checkBox_type2.setObjectName(u"checkBox_type2")
self.checkBox_type2.setFont(font1)
self.checkBox_type2.setChecked(True)
self.gridLayout_6.addWidget(self.checkBox_type2, 1, 1, 1, 1)
self.checkBox_type3 = QCheckBox(self.groupBox_artifact_type)
self.checkBox_type3.setObjectName(u"checkBox_type3")
self.checkBox_type3.setFont(font1)
self.checkBox_type3.setChecked(True)
self.gridLayout_6.addWidget(self.checkBox_type3, 1, 2, 1, 1)
self.checkBox_type4 = QCheckBox(self.groupBox_artifact_type)
self.checkBox_type4.setObjectName(u"checkBox_type4")
self.checkBox_type4.setFont(font1)
self.checkBox_type4.setChecked(True)
self.gridLayout_6.addWidget(self.checkBox_type4, 2, 1, 1, 1)
self.checkBox_type5 = QCheckBox(self.groupBox_artifact_type)
self.checkBox_type5.setObjectName(u"checkBox_type5")
self.checkBox_type5.setFont(font1)
self.checkBox_type5.setChecked(True)
self.gridLayout_6.addWidget(self.checkBox_type5, 2, 2, 1, 1)
self.horizontalLayout_2.addWidget(self.groupBox_artifact_type)
self.groupBox_function = QGroupBox(self.groupBox_left)
self.groupBox_function.setObjectName(u"groupBox_function")
self.gridLayout_13 = QGridLayout(self.groupBox_function)
self.gridLayout_13.setObjectName(u"gridLayout_13")
self.pushButton_invalid_signal_label = QPushButton(self.groupBox_function)
self.pushButton_invalid_signal_label.setObjectName(u"pushButton_invalid_signal_label")
sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Preferred)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.pushButton_invalid_signal_label.sizePolicy().hasHeightForWidth())
self.pushButton_invalid_signal_label.setSizePolicy(sizePolicy2)
self.pushButton_invalid_signal_label.setFont(font1)
self.gridLayout_13.addWidget(self.pushButton_invalid_signal_label, 0, 0, 1, 1)
self.pushButton_Ctype_signal_label = QPushButton(self.groupBox_function)
self.pushButton_Ctype_signal_label.setObjectName(u"pushButton_Ctype_signal_label")
sizePolicy2.setHeightForWidth(self.pushButton_Ctype_signal_label.sizePolicy().hasHeightForWidth())
self.pushButton_Ctype_signal_label.setSizePolicy(sizePolicy2)
self.pushButton_Ctype_signal_label.setFont(font1)
self.gridLayout_13.addWidget(self.pushButton_Ctype_signal_label, 1, 0, 1, 1)
self.horizontalLayout_2.addWidget(self.groupBox_function)
self.horizontalLayout_2.setStretch(0, 2)
self.horizontalLayout_2.setStretch(1, 1)
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_2.addItem(self.verticalSpacer_4)
self.groupBox_operation = QGroupBox(self.groupBox_left)
self.groupBox_operation.setObjectName(u"groupBox_operation")
self.gridLayout_7 = QGridLayout(self.groupBox_operation)
self.gridLayout_7.setObjectName(u"gridLayout_7")
self.pushButton_prev = QPushButton(self.groupBox_operation)
self.pushButton_prev.setObjectName(u"pushButton_prev")
sizePolicy2.setHeightForWidth(self.pushButton_prev.sizePolicy().hasHeightForWidth())
self.pushButton_prev.setSizePolicy(sizePolicy2)
self.pushButton_prev.setFont(font1)
self.gridLayout_7.addWidget(self.pushButton_prev, 4, 0, 1, 1)
self.checkBox_examine_tobeLabeled = QCheckBox(self.groupBox_operation)
self.checkBox_examine_tobeLabeled.setObjectName(u"checkBox_examine_tobeLabeled")
self.checkBox_examine_tobeLabeled.setFont(font1)
self.gridLayout_7.addWidget(self.checkBox_examine_tobeLabeled, 1, 0, 1, 1)
self.checkBox_highlight_longest_continuous = QCheckBox(self.groupBox_operation)
self.checkBox_highlight_longest_continuous.setObjectName(u"checkBox_highlight_longest_continuous")
self.checkBox_highlight_longest_continuous.setFont(font1)
self.gridLayout_7.addWidget(self.checkBox_highlight_longest_continuous, 0, 0, 1, 1)
self.pushButton_next = QPushButton(self.groupBox_operation)
self.pushButton_next.setObjectName(u"pushButton_next")
sizePolicy2.setHeightForWidth(self.pushButton_next.sizePolicy().hasHeightForWidth())
self.pushButton_next.setSizePolicy(sizePolicy2)
self.pushButton_next.setFont(font1)
self.gridLayout_7.addWidget(self.pushButton_next, 4, 1, 1, 1)
self.label = QLabel(self.groupBox_operation)
self.label.setObjectName(u"label")
self.label.setFont(font1)
self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.gridLayout_7.addWidget(self.label, 2, 0, 1, 1)
self.checkBox_display_afterfilter = QCheckBox(self.groupBox_operation)
self.checkBox_display_afterfilter.setObjectName(u"checkBox_display_afterfilter")
self.checkBox_display_afterfilter.setFont(font1)
self.gridLayout_7.addWidget(self.checkBox_display_afterfilter, 0, 1, 1, 1)
self.lineEdit_remark = QLineEdit(self.groupBox_operation)
self.lineEdit_remark.setObjectName(u"lineEdit_remark")
self.lineEdit_remark.setEnabled(True)
self.lineEdit_remark.setFont(font1)
self.gridLayout_7.addWidget(self.lineEdit_remark, 2, 1, 1, 1)
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.gridLayout_7.addItem(self.verticalSpacer_2, 3, 0, 1, 2)
self.gridLayout_7.setRowStretch(0, 1)
self.gridLayout_7.setRowStretch(1, 1)
self.gridLayout_7.setRowStretch(2, 1)
self.gridLayout_7.setRowStretch(3, 1)
self.gridLayout_7.setRowStretch(4, 3)
self.gridLayout_7.setColumnStretch(0, 1)
self.gridLayout_7.setColumnStretch(1, 1)
self.verticalLayout_2.addWidget(self.groupBox_operation)
self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_2.addItem(self.verticalSpacer_3)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.pushButton_save = QPushButton(self.groupBox_left)
self.pushButton_save.setObjectName(u"pushButton_save")
sizePolicy.setHeightForWidth(self.pushButton_save.sizePolicy().hasHeightForWidth())
self.pushButton_save.setSizePolicy(sizePolicy)
self.pushButton_save.setFont(font1)
self.horizontalLayout_3.addWidget(self.pushButton_save)
self.verticalLayout_2.addLayout(self.horizontalLayout_3)
self.groupBox_4 = QGroupBox(self.groupBox_left)
self.groupBox_4.setObjectName(u"groupBox_4")
self.verticalLayout_6 = QVBoxLayout(self.groupBox_4)
self.verticalLayout_6.setObjectName(u"verticalLayout_6")
self.textBrowser_info = QTextBrowser(self.groupBox_4)
self.textBrowser_info.setObjectName(u"textBrowser_info")
self.verticalLayout_6.addWidget(self.textBrowser_info)
self.verticalLayout_2.addWidget(self.groupBox_4)
self.verticalLayout_2.setStretch(0, 2)
self.verticalLayout_2.setStretch(1, 1)
self.verticalLayout_2.setStretch(2, 4)
self.verticalLayout_2.setStretch(3, 1)
self.verticalLayout_2.setStretch(4, 6)
self.verticalLayout_2.setStretch(5, 1)
self.verticalLayout_2.setStretch(6, 6)
self.verticalLayout_2.setStretch(7, 1)
self.verticalLayout_2.setStretch(8, 2)
self.verticalLayout_2.setStretch(9, 5)
self.gridLayout.addWidget(self.groupBox_left, 0, 0, 1, 1)
self.groupBox_right = QGroupBox(self.centralwidget)
self.groupBox_right.setObjectName(u"groupBox_right")
self.groupBox_right.setFont(font)
self.gridLayout_4 = QGridLayout(self.groupBox_right)
self.gridLayout_4.setObjectName(u"gridLayout_4")
self.verticalSpacer_9 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.gridLayout_4.addItem(self.verticalSpacer_9, 7, 0, 1, 2)
self.verticalSpacer_7 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.gridLayout_4.addItem(self.verticalSpacer_7, 3, 0, 1, 2)
self.pushButton_b1 = QPushButton(self.groupBox_right)
self.pushButton_b1.setObjectName(u"pushButton_b1")
sizePolicy2.setHeightForWidth(self.pushButton_b1.sizePolicy().hasHeightForWidth())
self.pushButton_b1.setSizePolicy(sizePolicy2)
font3 = QFont()
font3.setPointSize(24)
self.pushButton_b1.setFont(font3)
self.gridLayout_4.addWidget(self.pushButton_b1, 4, 0, 1, 1)
self.tableWidget_c = QTableWidget(self.groupBox_right)
if (self.tableWidget_c.columnCount() < 1):
self.tableWidget_c.setColumnCount(1)
self.tableWidget_c.setObjectName(u"tableWidget_c")
self.tableWidget_c.setFont(font1)
self.tableWidget_c.setColumnCount(1)
self.gridLayout_4.addWidget(self.tableWidget_c, 8, 1, 1, 1)
self.tableWidget_a1 = QTableWidget(self.groupBox_right)
if (self.tableWidget_a1.columnCount() < 1):
self.tableWidget_a1.setColumnCount(1)
self.tableWidget_a1.setObjectName(u"tableWidget_a1")
self.tableWidget_a1.setFont(font1)
self.tableWidget_a1.setColumnCount(1)
self.tableWidget_a1.horizontalHeader().setMinimumSectionSize(33)
self.tableWidget_a1.horizontalHeader().setDefaultSectionSize(75)
self.tableWidget_a1.verticalHeader().setMinimumSectionSize(32)
self.gridLayout_4.addWidget(self.tableWidget_a1, 0, 1, 1, 1)
self.pushButton_b2 = QPushButton(self.groupBox_right)
self.pushButton_b2.setObjectName(u"pushButton_b2")
sizePolicy2.setHeightForWidth(self.pushButton_b2.sizePolicy().hasHeightForWidth())
self.pushButton_b2.setSizePolicy(sizePolicy2)
self.pushButton_b2.setFont(font3)
self.gridLayout_4.addWidget(self.pushButton_b2, 6, 0, 1, 1)
self.pushButton_f = QPushButton(self.groupBox_right)
self.pushButton_f.setObjectName(u"pushButton_f")
sizePolicy2.setHeightForWidth(self.pushButton_f.sizePolicy().hasHeightForWidth())
self.pushButton_f.setSizePolicy(sizePolicy2)
self.pushButton_f.setFont(font3)
self.gridLayout_4.addWidget(self.pushButton_f, 10, 0, 1, 1)
self.tableWidget_f = QTableWidget(self.groupBox_right)
if (self.tableWidget_f.columnCount() < 1):
self.tableWidget_f.setColumnCount(1)
self.tableWidget_f.setObjectName(u"tableWidget_f")
self.tableWidget_f.setFont(font1)
self.tableWidget_f.setColumnCount(1)
self.gridLayout_4.addWidget(self.tableWidget_f, 10, 1, 1, 1)
self.pushButton_a2 = QPushButton(self.groupBox_right)
self.pushButton_a2.setObjectName(u"pushButton_a2")
sizePolicy2.setHeightForWidth(self.pushButton_a2.sizePolicy().hasHeightForWidth())
self.pushButton_a2.setSizePolicy(sizePolicy2)
self.pushButton_a2.setFont(font3)
self.gridLayout_4.addWidget(self.pushButton_a2, 2, 0, 1, 1)
self.verticalSpacer_6 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.gridLayout_4.addItem(self.verticalSpacer_6, 1, 0, 1, 2)
self.tableWidget_b1 = QTableWidget(self.groupBox_right)
if (self.tableWidget_b1.columnCount() < 1):
self.tableWidget_b1.setColumnCount(1)
self.tableWidget_b1.setObjectName(u"tableWidget_b1")
self.tableWidget_b1.setFont(font1)
self.tableWidget_b1.setColumnCount(1)
self.gridLayout_4.addWidget(self.tableWidget_b1, 4, 1, 1, 1)
self.pushButton_a1 = QPushButton(self.groupBox_right)
self.pushButton_a1.setObjectName(u"pushButton_a1")
sizePolicy2.setHeightForWidth(self.pushButton_a1.sizePolicy().hasHeightForWidth())
self.pushButton_a1.setSizePolicy(sizePolicy2)
self.pushButton_a1.setFont(font3)
self.gridLayout_4.addWidget(self.pushButton_a1, 0, 0, 1, 1)
self.tableWidget_b2 = QTableWidget(self.groupBox_right)
if (self.tableWidget_b2.columnCount() < 1):
self.tableWidget_b2.setColumnCount(1)
self.tableWidget_b2.setObjectName(u"tableWidget_b2")
self.tableWidget_b2.setFont(font1)
self.tableWidget_b2.setColumnCount(1)
self.gridLayout_4.addWidget(self.tableWidget_b2, 6, 1, 1, 1)
self.tableWidget_a2 = QTableWidget(self.groupBox_right)
if (self.tableWidget_a2.columnCount() < 1):
self.tableWidget_a2.setColumnCount(1)
self.tableWidget_a2.setObjectName(u"tableWidget_a2")
self.tableWidget_a2.setFont(font1)
self.tableWidget_a2.setColumnCount(1)
self.gridLayout_4.addWidget(self.tableWidget_a2, 2, 1, 1, 1)
self.verticalSpacer_8 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.gridLayout_4.addItem(self.verticalSpacer_8, 5, 0, 1, 2)
self.pushButton_c = QPushButton(self.groupBox_right)
self.pushButton_c.setObjectName(u"pushButton_c")
sizePolicy2.setHeightForWidth(self.pushButton_c.sizePolicy().hasHeightForWidth())
self.pushButton_c.setSizePolicy(sizePolicy2)
self.pushButton_c.setFont(font3)
self.gridLayout_4.addWidget(self.pushButton_c, 8, 0, 1, 1)
self.verticalSpacer_10 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.gridLayout_4.addItem(self.verticalSpacer_10, 9, 0, 1, 2)
self.gridLayout_4.setRowStretch(0, 5)
self.gridLayout_4.setRowStretch(1, 1)
self.gridLayout_4.setRowStretch(2, 5)
self.gridLayout_4.setRowStretch(3, 1)
self.gridLayout_4.setRowStretch(4, 5)
self.gridLayout_4.setRowStretch(5, 1)
self.gridLayout_4.setRowStretch(6, 5)
self.gridLayout_4.setRowStretch(7, 1)
self.gridLayout_4.setRowStretch(8, 5)
self.gridLayout_4.setRowStretch(9, 1)
self.gridLayout_4.setRowStretch(10, 5)
self.gridLayout_4.setColumnStretch(0, 1)
self.gridLayout_4.setColumnStretch(1, 2)
self.gridLayout.addWidget(self.groupBox_right, 0, 2, 1, 1)
self.gridLayout.setColumnStretch(0, 4)
self.gridLayout.setColumnStretch(1, 15)
self.gridLayout.setColumnStretch(2, 4)
MainWindow_bcg_quality_label.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow_bcg_quality_label)
self.statusbar.setObjectName(u"statusbar")
MainWindow_bcg_quality_label.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow_bcg_quality_label)
QMetaObject.connectSlotsByName(MainWindow_bcg_quality_label)
# setupUi
def retranslateUi(self, MainWindow_bcg_quality_label):
MainWindow_bcg_quality_label.setWindowTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"BCG\u7684\u8d28\u91cf\u6807\u6ce8", None))
self.groupBox_canvas.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u7ed8\u56fe\u533a", None))
self.groupBox_left.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"BCG\u7684\u8d28\u91cf\u6807\u6ce8", None))
self.pushButton_input_setting.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u5bfc\u5165\u8bbe\u7f6e", None))
self.pushButton_input.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u5f00\u59cb\u5bfc\u5165", None))
self.groupBox_status.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u8fd0\u884c\u72b6\u6001", None))
self.label_5.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u5f53\u524d\u7247\u6bb5\u65f6\u95f4", None))
self.label_6.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u5f53\u524d\u7247\u6bb5/\u7247\u6bb5\u603b\u6570", None))
self.label_12.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u6700\u957f\u8fde\u7eed\u65f6\u95f4", None))
self.label_13.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u4f53\u52a8\u65f6\u95f4\u5360\u6bd4", None))
self.groupBox_artifact_type.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u4f53\u52a8\u7c7b\u578b", None))
self.checkBox_allin.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u5168\u9009", None))
self.checkBox_type1.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u7c7b\u578b1", None))
self.checkBox_type2.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u7c7b\u578b2", None))
self.checkBox_type3.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u7c7b\u578b3", None))
self.checkBox_type4.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u7c7b\u578b4", None))
self.checkBox_type5.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u7c7b\u578b5", None))
self.groupBox_function.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u529f\u80fd", None))
self.pushButton_invalid_signal_label.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u65e0\u6548\u4fe1\u53f7\u6253\u6807", None))
self.pushButton_Ctype_signal_label.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"C\u7c7b\u4fe1\u53f7\u6253\u6807", None))
self.groupBox_operation.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u64cd\u4f5c", None))
self.pushButton_prev.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"<(A)", None))
self.checkBox_examine_tobeLabeled.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u4ec5\u67e5\u672a\u6807\u7247\u6bb5", None))
self.checkBox_highlight_longest_continuous.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u9ad8\u4eae\u6700\u957f\u8fde\u7eed", None))
self.pushButton_next.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u">(D)", None))
self.label.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u8f93\u5165\u5907\u6ce8", None))
self.checkBox_display_afterfilter.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u53bb\u9664\u5de5\u9891\u566a\u58f0", None))
self.pushButton_save.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u5bfc\u51fa\u6807\u7b7e", None))
self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u65e5\u5fd7", None))
self.groupBox_right.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u6807\u7b7e\u8bb0\u5f55", None))
self.pushButton_b1.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"b1", None))
self.pushButton_b2.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"b2", None))
self.pushButton_f.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"\u5220\u9664", None))
self.pushButton_a2.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"a2", None))
self.pushButton_a1.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"a1", None))
self.pushButton_c.setText(QCoreApplication.translate("MainWindow_bcg_quality_label", u"c", None))
# retranslateUi

View File

@ -0,0 +1,853 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow_bcg_quality_label</class>
<widget class="QMainWindow" name="MainWindow_bcg_quality_label">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>BCG的质量标注</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout" columnstretch="4,15,4">
<item row="0" column="1">
<widget class="QGroupBox" name="groupBox_canvas">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>绘图区</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout_canvas"/>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_left">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>BCG的质量标注</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="2,1,4,1,6,1,6,1,2,5">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_input_setting">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>导入设置</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_input">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>开始导入</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QGroupBox" name="groupBox_status">
<property name="title">
<string>运行状态</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>当前片段时间</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>当前片段/片段总数</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_12">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>最长连续时间</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_13">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>体动时间占比</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_artifact_time_percentage">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_longest_continuous_time">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_data_part_num">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_current_part_time">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="2,1">
<item>
<widget class="QGroupBox" name="groupBox_artifact_type">
<property name="title">
<string>体动类型</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="1">
<widget class="QCheckBox" name="checkBox_allin">
<property name="font">
<font>
<pointsize>20</pointsize>
</font>
</property>
<property name="text">
<string>全选</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QCheckBox" name="checkBox_type1">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>类型1</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="checkBox_type2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>类型2</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QCheckBox" name="checkBox_type3">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>类型3</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="checkBox_type4">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>类型4</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QCheckBox" name="checkBox_type5">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>类型5</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_function">
<property name="title">
<string>功能</string>
</property>
<layout class="QGridLayout" name="gridLayout_13">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_invalid_signal_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>无效信号打标</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_Ctype_signal_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>C类信号打标</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QGroupBox" name="groupBox_operation">
<property name="title">
<string>操作</string>
</property>
<layout class="QGridLayout" name="gridLayout_7" rowstretch="1,1,1,1,3" columnstretch="1,1">
<item row="4" column="0">
<widget class="QPushButton" name="pushButton_prev">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>&lt;(A)</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_examine_tobeLabeled">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>仅查未标片段</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_highlight_longest_continuous">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>高亮最长连续</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="pushButton_next">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>&gt;(D)</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>输入备注</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="checkBox_display_afterfilter">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>去除工频噪声</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_remark">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="pushButton_save">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>导出标签</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>日志</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QTextBrowser" name="textBrowser_info"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="2">
<widget class="QGroupBox" name="groupBox_right">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>标签记录</string>
</property>
<layout class="QGridLayout" name="gridLayout_4" rowstretch="5,1,5,1,5,1,5,1,5,1,5" columnstretch="1,2">
<item row="7" column="0" colspan="2">
<spacer name="verticalSpacer_9">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0" colspan="2">
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QPushButton" name="pushButton_b1">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>24</pointsize>
</font>
</property>
<property name="text">
<string>b1</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QTableWidget" name="tableWidget_c">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="columnCount">
<number>1</number>
</property>
<column/>
</widget>
</item>
<item row="0" column="1">
<widget class="QTableWidget" name="tableWidget_a1">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="columnCount">
<number>1</number>
</property>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>33</number>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>75</number>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>32</number>
</attribute>
<column/>
</widget>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="pushButton_b2">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>24</pointsize>
</font>
</property>
<property name="text">
<string>b2</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QPushButton" name="pushButton_f">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>24</pointsize>
</font>
</property>
<property name="text">
<string>删除</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QTableWidget" name="tableWidget_f">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="columnCount">
<number>1</number>
</property>
<column/>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_a2">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>24</pointsize>
</font>
</property>
<property name="text">
<string>a2</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="1">
<widget class="QTableWidget" name="tableWidget_b1">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="columnCount">
<number>1</number>
</property>
<column/>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_a1">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>24</pointsize>
</font>
</property>
<property name="text">
<string>a1</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QTableWidget" name="tableWidget_b2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="columnCount">
<number>1</number>
</property>
<column/>
</widget>
</item>
<item row="2" column="1">
<widget class="QTableWidget" name="tableWidget_a2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="columnCount">
<number>1</number>
</property>
<column/>
</widget>
</item>
<item row="5" column="0" colspan="2">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="8" column="0">
<widget class="QPushButton" name="pushButton_c">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>24</pointsize>
</font>
</property>
<property name="text">
<string>c</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2">
<spacer name="verticalSpacer_10">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,177 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'bcg_quality_label_input_setting.ui'
##
## Created by: Qt User Interface Compiler version 6.8.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QGridLayout, QGroupBox, QHBoxLayout,
QLabel, QMainWindow, QPlainTextEdit, QPushButton,
QRadioButton, QSizePolicy, QSpacerItem, QSpinBox,
QStatusBar, QVBoxLayout, QWidget)
class Ui_MainWindow_bcg_quality_label_input_setting(object):
def setupUi(self, MainWindow_bcg_quality_label_input_setting):
if not MainWindow_bcg_quality_label_input_setting.objectName():
MainWindow_bcg_quality_label_input_setting.setObjectName(u"MainWindow_bcg_quality_label_input_setting")
MainWindow_bcg_quality_label_input_setting.resize(540, 540)
self.centralwidget = QWidget(MainWindow_bcg_quality_label_input_setting)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName(u"gridLayout")
self.pushButton_cancel = QPushButton(self.centralwidget)
self.pushButton_cancel.setObjectName(u"pushButton_cancel")
font = QFont()
font.setPointSize(12)
self.pushButton_cancel.setFont(font)
self.gridLayout.addWidget(self.pushButton_cancel, 1, 3, 1, 1)
self.groupBox = QGroupBox(self.centralwidget)
self.groupBox.setObjectName(u"groupBox")
font1 = QFont()
font1.setPointSize(10)
self.groupBox.setFont(font1)
self.verticalLayout_2 = QVBoxLayout(self.groupBox)
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
self.groupBox_file_path_input_signal_BCG = QGroupBox(self.groupBox)
self.groupBox_file_path_input_signal_BCG.setObjectName(u"groupBox_file_path_input_signal_BCG")
self.verticalLayout_5 = QVBoxLayout(self.groupBox_file_path_input_signal_BCG)
self.verticalLayout_5.setObjectName(u"verticalLayout_5")
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.label_2 = QLabel(self.groupBox_file_path_input_signal_BCG)
self.label_2.setObjectName(u"label_2")
self.label_2.setFont(font)
self.horizontalLayout_2.addWidget(self.label_2)
self.spinBox_input_freq_signal_BCG = QSpinBox(self.groupBox_file_path_input_signal_BCG)
self.spinBox_input_freq_signal_BCG.setObjectName(u"spinBox_input_freq_signal_BCG")
self.spinBox_input_freq_signal_BCG.setFont(font)
self.spinBox_input_freq_signal_BCG.setMinimum(1)
self.spinBox_input_freq_signal_BCG.setMaximum(1000000)
self.horizontalLayout_2.addWidget(self.spinBox_input_freq_signal_BCG)
self.verticalLayout_5.addLayout(self.horizontalLayout_2)
self.plainTextEdit_file_path_input_signal_BCG = QPlainTextEdit(self.groupBox_file_path_input_signal_BCG)
self.plainTextEdit_file_path_input_signal_BCG.setObjectName(u"plainTextEdit_file_path_input_signal_BCG")
self.verticalLayout_5.addWidget(self.plainTextEdit_file_path_input_signal_BCG)
self.verticalLayout_5.setStretch(0, 1)
self.verticalLayout_5.setStretch(1, 2)
self.verticalLayout_2.addWidget(self.groupBox_file_path_input_signal_BCG)
self.groupBox_file_path_input_artifact = QGroupBox(self.groupBox)
self.groupBox_file_path_input_artifact.setObjectName(u"groupBox_file_path_input_artifact")
self.verticalLayout_6 = QVBoxLayout(self.groupBox_file_path_input_artifact)
self.verticalLayout_6.setObjectName(u"verticalLayout_6")
self.plainTextEdit_file_path_input_artifact = QPlainTextEdit(self.groupBox_file_path_input_artifact)
self.plainTextEdit_file_path_input_artifact.setObjectName(u"plainTextEdit_file_path_input_artifact")
self.verticalLayout_6.addWidget(self.plainTextEdit_file_path_input_artifact)
self.verticalLayout_6.setStretch(0, 2)
self.verticalLayout_2.addWidget(self.groupBox_file_path_input_artifact)
self.groupBox_file_path_save = QGroupBox(self.groupBox)
self.groupBox_file_path_save.setObjectName(u"groupBox_file_path_save")
self.verticalLayout_4 = QVBoxLayout(self.groupBox_file_path_save)
self.verticalLayout_4.setObjectName(u"verticalLayout_4")
self.plainTextEdit_file_path_save = QPlainTextEdit(self.groupBox_file_path_save)
self.plainTextEdit_file_path_save.setObjectName(u"plainTextEdit_file_path_save")
self.verticalLayout_4.addWidget(self.plainTextEdit_file_path_save)
self.verticalLayout_2.addWidget(self.groupBox_file_path_save)
self.groupBox_display_mode = QGroupBox(self.groupBox)
self.groupBox_display_mode.setObjectName(u"groupBox_display_mode")
self.horizontalLayout = QHBoxLayout(self.groupBox_display_mode)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(self.horizontalSpacer)
self.radioButton_30s_mode = QRadioButton(self.groupBox_display_mode)
self.radioButton_30s_mode.setObjectName(u"radioButton_30s_mode")
self.radioButton_30s_mode.setFont(font)
self.horizontalLayout.addWidget(self.radioButton_30s_mode)
self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(self.horizontalSpacer_3)
self.radioButton_10s_mode = QRadioButton(self.groupBox_display_mode)
self.radioButton_10s_mode.setObjectName(u"radioButton_10s_mode")
self.radioButton_10s_mode.setFont(font)
self.horizontalLayout.addWidget(self.radioButton_10s_mode)
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(self.horizontalSpacer_2)
self.verticalLayout_2.addWidget(self.groupBox_display_mode)
self.verticalLayout_2.setStretch(0, 3)
self.verticalLayout_2.setStretch(1, 2)
self.verticalLayout_2.setStretch(2, 2)
self.verticalLayout_2.setStretch(3, 2)
self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 4)
self.pushButton_confirm = QPushButton(self.centralwidget)
self.pushButton_confirm.setObjectName(u"pushButton_confirm")
self.pushButton_confirm.setFont(font)
self.gridLayout.addWidget(self.pushButton_confirm, 1, 2, 1, 1)
MainWindow_bcg_quality_label_input_setting.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow_bcg_quality_label_input_setting)
self.statusbar.setObjectName(u"statusbar")
MainWindow_bcg_quality_label_input_setting.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow_bcg_quality_label_input_setting)
QMetaObject.connectSlotsByName(MainWindow_bcg_quality_label_input_setting)
# setupUi
def retranslateUi(self, MainWindow_bcg_quality_label_input_setting):
MainWindow_bcg_quality_label_input_setting.setWindowTitle(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u5bfc\u5165\u8bbe\u7f6e", None))
self.pushButton_cancel.setText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u53d6\u6d88", None))
self.groupBox.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_input_signal_BCG.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u540c\u6b65\u540e\u7684BCG\u8def\u5f84", None))
self.label_2.setText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u91c7\u6837\u7387(Hz)\uff1a", None))
self.plainTextEdit_file_path_input_signal_BCG.setPlainText("")
self.plainTextEdit_file_path_input_signal_BCG.setPlaceholderText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_input_artifact.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u4f53\u52a8Artifact_a\u8def\u5f84", None))
self.plainTextEdit_file_path_input_artifact.setPlainText("")
self.plainTextEdit_file_path_input_artifact.setPlaceholderText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_save.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"BCG\u8d28\u91cf\u6807\u7b7e\u4fdd\u5b58\u8def\u5f84", None))
self.plainTextEdit_file_path_save.setPlaceholderText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u4fdd\u5b58\u8def\u5f84", None))
self.groupBox_display_mode.setTitle(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u663e\u793a\u6a21\u5f0f", None))
self.radioButton_30s_mode.setText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"30s\u6a21\u5f0f", None))
self.radioButton_10s_mode.setText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"10s\u6a21\u5f0f", None))
self.pushButton_confirm.setText(QCoreApplication.translate("MainWindow_bcg_quality_label_input_setting", u"\u786e\u5b9a", None))
# retranslateUi

View File

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow_bcg_quality_label_input_setting</class>
<widget class="QMainWindow" name="MainWindow_bcg_quality_label_input_setting">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>540</width>
<height>540</height>
</rect>
</property>
<property name="windowTitle">
<string>导入设置</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="3">
<widget class="QPushButton" name="pushButton_cancel">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>取消</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="4">
<widget class="QGroupBox" name="groupBox">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>文件路径</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="3,2,2,2">
<item>
<widget class="QGroupBox" name="groupBox_file_path_input_signal_BCG">
<property name="title">
<string>同步后的BCG路径</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5" stretch="1,2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>采样率(Hz)</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_input_freq_signal_BCG">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>1000000</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QPlainTextEdit" name="plainTextEdit_file_path_input_signal_BCG">
<property name="plainText">
<string/>
</property>
<property name="placeholderText">
<string>文件路径</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_file_path_input_artifact">
<property name="title">
<string>体动Artifact_a路径</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6" stretch="2">
<item>
<widget class="QPlainTextEdit" name="plainTextEdit_file_path_input_artifact">
<property name="plainText">
<string/>
</property>
<property name="placeholderText">
<string>文件路径</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_file_path_save">
<property name="title">
<string>BCG质量标签保存路径</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QPlainTextEdit" name="plainTextEdit_file_path_save">
<property name="placeholderText">
<string>保存路径</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_display_mode">
<property name="title">
<string>显示模式</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QRadioButton" name="radioButton_30s_mode">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>30s模式</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QRadioButton" name="radioButton_10s_mode">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>10s模式</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButton_confirm">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>确定</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>