1、精简部分公共代码到PublicFunc.py中

2、完成了<人工纠正>的部分代码
This commit is contained in:
2025-05-05 20:43:22 +08:00
parent 74f9d357a1
commit 10247fb738
12 changed files with 686 additions and 330 deletions

View File

@ -2,7 +2,7 @@ from gc import collect
from pathlib import Path
import matplotlib.pyplot as plt
from PySide6.QtWidgets import QMessageBox, QMainWindow, QWidget, QPushButton, QProgressBar, QApplication
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
from matplotlib import gridspec
from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
@ -135,7 +135,7 @@ class MainWindow_detect_Jpeak(QMainWindow):
# 初始化进度条
self.progressbar = None
self.add_progressbar()
PublicFunc.add_progressbar(self)
#初始化画框
self.fig = None
@ -175,7 +175,7 @@ class MainWindow_detect_Jpeak(QMainWindow):
self.ax0.grid(True)
self.ax0.xaxis.set_major_formatter(ConfigParams.FORMATTER)
self.__resetAllButton__()
PublicFunc.__resetAllButton__(self, ButtonState)
self.ui.doubleSpinBox_bandPassLow.setValue(Config["Filter"]["BandPassLow"])
self.ui.doubleSpinBox_bandPassHigh.setValue(Config["Filter"]["BandPassHigh"])
@ -201,9 +201,9 @@ class MainWindow_detect_Jpeak(QMainWindow):
@overrides
def closeEvent(self, event):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
QApplication.processEvents()
# 清空画框
@ -262,36 +262,6 @@ class MainWindow_detect_Jpeak(QMainWindow):
self.canvas.draw()
return status, info
def __disableAllButton__(self):
# 禁用所有按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并禁用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Current"].keys():
widget.setEnabled(False)
def __enableAllButton__(self):
# 启用按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Current"].keys():
widget.setEnabled(ButtonState["Current"][widget.objectName()])
def __resetAllButton__(self):
# 启用按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Default"].keys():
widget.setEnabled(ButtonState["Default"][widget.objectName()])
def __update_config__(self):
Config["Filter"]["BandPassLow"] = self.ui.doubleSpinBox_bandPassLow.value()
@ -303,33 +273,9 @@ class MainWindow_detect_Jpeak(QMainWindow):
Config["UseCPU"] = self.ui.checkBox_useCPU.isChecked()
Config["DetectMethod"] = self.ui.comboBox_model.currentText()
def finish_operation(self):
self.statusbar_show_msg(PublicFunc.format_status_msg(Constants.OPERATION_FINISHED))
self.progressbar.setValue(100)
QApplication.processEvents()
self.__enableAllButton__()
def add_progressbar(self):
self.progressbar = QProgressBar()
self.progressbar.setRange(0, 100)
self.progressbar.setValue(0)
self.progressbar.setStyleSheet(Constants.PROGRESSBAR_STYLE)
self.ui.statusbar.addPermanentWidget(self.progressbar)
def statusbar_show_msg(self, msg):
self.ui.statusbar.showMessage(msg)
def statusbar_clear_msg(self):
self.ui.statusbar.clearMessage()
def __slot_btn_input__(self):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
# 清空画框
if self.line_data and self.point_peak and self.line_interval:
@ -344,7 +290,7 @@ class MainWindow_detect_Jpeak(QMainWindow):
# 清空模型列表
self.ui.comboBox_model.clear()
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/2)" + Constants.DETECT_JPEAK_LOADING_MODEL))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/2)" + Constants.DETECT_JPEAK_LOADING_MODEL))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -354,13 +300,13 @@ class MainWindow_detect_Jpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_INFO)
self.update_ui_comboBox_model(self.model.model_list)
self.statusbar_show_msg(PublicFunc.format_status_msg("(2/2)" + Constants.INPUTTING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(2/2)" + Constants.INPUTTING_DATA))
self.progressbar.setValue(10)
QApplication.processEvents()
@ -370,19 +316,19 @@ class MainWindow_detect_Jpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_INFO)
MainWindow_detect_Jpeak.__reset__()
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def __slot_btn_view__(self):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/3)" + Constants.DETECT_JPEAK_PROCESSING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/3)" + Constants.DETECT_JPEAK_PROCESSING_DATA))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -391,12 +337,12 @@ class MainWindow_detect_Jpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/3)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/3)" + info, Constants.TIPS_TYPE_INFO)
self.statusbar_show_msg(PublicFunc.format_status_msg("(2/3)" + Constants.DETECT_JPEAK_PREDICTING_PEAK))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(2/3)" + Constants.DETECT_JPEAK_PREDICTING_PEAK))
self.progressbar.setValue(10)
QApplication.processEvents()
@ -406,7 +352,7 @@ class MainWindow_detect_Jpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(2/3)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(2/3)" + info, Constants.TIPS_TYPE_INFO)
@ -418,7 +364,7 @@ class MainWindow_detect_Jpeak(QMainWindow):
PublicFunc.text_output(self.ui, Constants.DETECT_JPEAK_PEAK_AMOUNT + str(len(self.data.peak)),
Constants.TIPS_TYPE_INFO)
self.statusbar_show_msg(PublicFunc.format_status_msg("(3/3)" + Constants.DRAWING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(3/3)" + Constants.DRAWING_DATA))
self.progressbar.setValue(70)
QApplication.processEvents()
@ -427,13 +373,13 @@ class MainWindow_detect_Jpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(3/3)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(3/3)" + info, Constants.TIPS_TYPE_INFO)
ButtonState["Current"]["pushButton_save"] = True
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def __slot_btn_save__(self):
@ -442,9 +388,9 @@ class MainWindow_detect_Jpeak(QMainWindow):
QMessageBox.Yes | QMessageBox.No,
QMessageBox.Yes)
if reply == QMessageBox.Yes:
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/1)" + Constants.SAVING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/1)" + Constants.SAVING_DATA))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -464,13 +410,13 @@ class MainWindow_detect_Jpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_INFO)
PublicFunc.msgbox_output(self, info, Constants.TIPS_TYPE_INFO)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def update_ui_comboBox_model(self, model_list):

View File

@ -2,7 +2,7 @@ from gc import collect
from pathlib import Path
import matplotlib.pyplot as plt
from PySide6.QtWidgets import QMessageBox, QMainWindow, QWidget, QPushButton, QProgressBar, QApplication
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
from matplotlib import gridspec
from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
@ -132,7 +132,7 @@ class MainWindow_detect_Rpeak(QMainWindow):
# 初始化进度条
self.progressbar = None
self.add_progressbar()
PublicFunc.add_progressbar(self)
#初始化画框
self.fig = None
@ -178,7 +178,7 @@ class MainWindow_detect_Rpeak(QMainWindow):
self.ax1.grid(True)
self.ax1.xaxis.set_major_formatter(ConfigParams.FORMATTER)
self.__resetAllButton__()
PublicFunc.__resetAllButton__(self, ButtonState)
self.ui.doubleSpinBox_bandPassLow.setValue(Config["Filter"]["BandPassLow"])
self.ui.doubleSpinBox_bandPassHigh.setValue(Config["Filter"]["BandPassHigh"])
@ -196,9 +196,9 @@ class MainWindow_detect_Rpeak(QMainWindow):
@overrides
def closeEvent(self, event):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
QApplication.processEvents()
# 清空画框
@ -261,36 +261,6 @@ class MainWindow_detect_Rpeak(QMainWindow):
self.canvas.draw()
return status, info
def __disableAllButton__(self):
# 禁用所有按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并禁用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Current"].keys():
widget.setEnabled(False)
def __enableAllButton__(self):
# 启用按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Current"].keys():
widget.setEnabled(ButtonState["Current"][widget.objectName()])
def __resetAllButton__(self):
# 启用按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Default"].keys():
widget.setEnabled(ButtonState["Default"][widget.objectName()])
def __update_config__(self):
Config["Filter"]["BandPassLow"] = self.ui.doubleSpinBox_bandPassLow.value()
@ -298,33 +268,9 @@ class MainWindow_detect_Rpeak(QMainWindow):
Config["PeaksValue"] = self.ui.spinBox_peaksValue.value()
Config["DetectMethod"] = self.ui.comboBox_method.currentText()
def finish_operation(self):
self.statusbar_show_msg(PublicFunc.format_status_msg(Constants.OPERATION_FINISHED))
self.progressbar.setValue(100)
QApplication.processEvents()
self.__enableAllButton__()
def add_progressbar(self):
self.progressbar = QProgressBar()
self.progressbar.setRange(0, 100)
self.progressbar.setValue(0)
self.progressbar.setStyleSheet(Constants.PROGRESSBAR_STYLE)
self.ui.statusbar.addPermanentWidget(self.progressbar)
def statusbar_show_msg(self, msg):
self.ui.statusbar.showMessage(msg)
def statusbar_clear_msg(self):
self.ui.statusbar.clearMessage()
def __slot_btn_input__(self):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
# 清空画框
if self.line_data and self.point_peak and self.line_interval:
@ -339,7 +285,7 @@ class MainWindow_detect_Rpeak(QMainWindow):
# 清空方法列表
self.ui.comboBox_method.clear()
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/2)" + Constants.DETECT_RPEAK_LOADING_METHOD))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/2)" + Constants.DETECT_RPEAK_LOADING_METHOD))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -354,13 +300,13 @@ class MainWindow_detect_Rpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_INFO)
self.update_ui_comboBox_method(method_list)
self.statusbar_show_msg(PublicFunc.format_status_msg("(2/2)" + Constants.INPUTTING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(2/2)" + Constants.INPUTTING_DATA))
self.progressbar.setValue(10)
QApplication.processEvents()
@ -370,19 +316,19 @@ class MainWindow_detect_Rpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_INFO)
MainWindow_detect_Rpeak.__reset__()
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def __slot_btn_view__(self):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/3)" + Constants.DETECT_RPEAK_PROCESSING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/3)" + Constants.DETECT_RPEAK_PROCESSING_DATA))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -391,12 +337,12 @@ class MainWindow_detect_Rpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/3)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/3)" + info, Constants.TIPS_TYPE_INFO)
self.statusbar_show_msg(PublicFunc.format_status_msg("(2/3)" + Constants.DETECT_RPEAK_PREDICTING_PEAK))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(2/3)" + Constants.DETECT_RPEAK_PREDICTING_PEAK))
self.progressbar.setValue(10)
QApplication.processEvents()
@ -405,7 +351,7 @@ class MainWindow_detect_Rpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(2/3)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(2/3)" + info, Constants.TIPS_TYPE_INFO)
@ -417,7 +363,7 @@ class MainWindow_detect_Rpeak(QMainWindow):
PublicFunc.text_output(self.ui, Constants.DETECT_RPEAK_PEAK_AMOUNT + str(len(self.data.peak)),
Constants.TIPS_TYPE_INFO)
self.statusbar_show_msg(PublicFunc.format_status_msg("(3/3)" + Constants.DRAWING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(3/3)" + Constants.DRAWING_DATA))
self.progressbar.setValue(70)
QApplication.processEvents()
@ -426,13 +372,13 @@ class MainWindow_detect_Rpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(3/3)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(3/3)" + info, Constants.TIPS_TYPE_INFO)
ButtonState["Current"]["pushButton_save"] = True
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def __slot_btn_save__(self):
@ -441,9 +387,9 @@ class MainWindow_detect_Rpeak(QMainWindow):
QMessageBox.Yes | QMessageBox.No,
QMessageBox.Yes)
if reply == QMessageBox.Yes:
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/1)" + Constants.SAVING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/1)" + Constants.SAVING_DATA))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -463,13 +409,13 @@ class MainWindow_detect_Rpeak(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_INFO)
PublicFunc.msgbox_output(self, info, Constants.TIPS_TYPE_INFO)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def update_ui_comboBox_method(self, method_list):

348
func/Module_label_check.py Normal file
View File

@ -0,0 +1,348 @@
from gc import collect
from pathlib import Path
import matplotlib.pyplot as plt
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
from matplotlib import gridspec
from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
from overrides import overrides
from pandas import read_csv, DataFrame
from scipy.signal import resample
from yaml import dump, load, FullLoader
from func.utils.PublicFunc import PublicFunc
from func.utils.Constants import Constants, ConfigParams
from ui.MainWindow.MainWindow_label_check import Ui_MainWindow_label_check
from ui.setting.label_check_input_setting import Ui_MainWindow_label_check_input_setting
Config = {
}
ButtonState = {
"Default": {
"pushButton_input_setting": True,
"pushButton_input": True,
"pushButton_prev_move": False,
"pushButton_pause": False,
"pushButton_next_move": False,
"pushButton_save": False
},
"Current": {
"pushButton_input_setting": True,
"pushButton_input": True,
"pushButton_prev_move": False,
"pushButton_pause": False,
"pushButton_next_move": False,
"pushButton_save": False
}
}
class SettingWindow(QMainWindow):
def __init__(self, mode, root_path, sampID):
super(SettingWindow, self).__init__()
self.ui = Ui_MainWindow_label_check_input_setting()
self.ui.setupUi(self)
self.mode = mode
self.root_path = root_path
self.sampID = sampID
self.config = None
self.__read_config__()
self.ui.spinBox_input_freq_signal.valueChanged.connect(self.__update_ui__)
self.ui.spinBox_bandPassOrder.valueChanged.connect(self.__update_ui__)
self.ui.doubleSpinBox_bandPassLow.valueChanged.connect(self.__update_ui__)
self.ui.doubleSpinBox_bandPassHigh.valueChanged.connect(self.__update_ui__)
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.LABEL_CHECK_CONFIG_FILE_PATH).exists():
with open(ConfigParams.LABEL_CHECK_CONFIG_FILE_PATH, "w") as f:
dump(ConfigParams.LABEL_CHECK_CONFIG_NEW_CONTENT, f)
with open(ConfigParams.LABEL_CHECK_CONFIG_FILE_PATH, "r") as f:
file_config = load(f.read(), Loader=FullLoader)
Config.update(file_config)
self.config = file_config
if self.mode == "BCG":
Config.update({
"Path": {
"Input_Signal": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_INPUT_BCG_FILENAME +
str(Config["InputConfig"]["Freq"]) +
ConfigParams.ENDSWITH_TXT))),
"Input_Peak": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_INPUT_JPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT))),
"Save": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_SAVE_JPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT)))
},
"Mode": self.mode
})
elif self.mode == "ECG":
Config.update({
"Path": {
"Input_Signal": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_INPUT_ECG_FILENAME +
str(Config["InputConfig"]["Freq"]) +
ConfigParams.ENDSWITH_TXT))),
"Input_Peak": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_INPUT_RPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT))),
"Save": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_SAVE_RPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT)))
},
"Mode": self.mode
})
else:
raise ValueError
# 数据回显
self.ui.spinBox_input_freq_signal.setValue(Config["InputConfig"]["Freq"])
self.ui.plainTextEdit_file_path_input_signal.setPlainText(Config["Path"]["Input_Signal"])
self.ui.plainTextEdit_file_path_input_peak.setPlainText(Config["Path"]["Input_Peak"])
self.ui.plainTextEdit_file_path_save.setPlainText(Config["Path"]["Save"])
if Config["Mode"] == "BCG":
self.ui.spinBox_bandPassOrder.setValue(Config["Filter"]["BCGBandPassOrder"])
self.ui.doubleSpinBox_bandPassLow.setValue(Config["Filter"]["BCGBandPassLow"])
self.ui.doubleSpinBox_bandPassHigh.setValue(Config["Filter"]["BCGBandPassHigh"])
elif Config["Mode"] == "ECG":
self.ui.spinBox_bandPassOrder.setValue(Config["Filter"]["ECGBandPassOrder"])
self.ui.doubleSpinBox_bandPassLow.setValue(Config["Filter"]["ECGBandPassLow"])
self.ui.doubleSpinBox_bandPassHigh.setValue(Config["Filter"]["ECGBandPassHigh"])
else:
raise ValueError
def __write_config__(self):
# 从界面写入配置
Config["InputConfig"]["Freq"] = self.ui.spinBox_input_freq_signal.value()
Config["Path"]["Input_Signal"] = self.ui.plainTextEdit_file_path_input_signal.toPlainText()
Config["Path"]["Input_Peak"] = self.ui.plainTextEdit_file_path_input_peak.toPlainText()
Config["Path"]["Save"] = self.ui.plainTextEdit_file_path_save.toPlainText()
if Config["Mode"] == "BCG":
Config["Filter"]["BCGBandPassOrder"] = self.ui.spinBox_bandPassOrder.value()
Config["Filter"]["BCGBandPassLow"] = self.ui.doubleSpinBox_bandPassLow.value()
Config["Filter"]["BCGBandPassHigh"] = self.ui.doubleSpinBox_bandPassHigh.value()
elif Config["Mode"] == "ECG":
Config["Filter"]["ECGBandPassOrder"] = self.ui.spinBox_bandPassOrder.value()
Config["Filter"]["ECGBandPassLow"] = self.ui.doubleSpinBox_bandPassLow.value()
Config["Filter"]["ECGBandPassHigh"] = self.ui.doubleSpinBox_bandPassHigh.value()
else:
raise ValueError
# 保存配置到文件
self.config["InputConfig"]["Freq"] = self.ui.spinBox_input_freq_signal.value()
with open(ConfigParams.LABEL_CHECK_CONFIG_FILE_PATH, "w") as f:
dump(self.config, f)
self.close()
def __rollback_config__(self):
self.__read_config__()
def __update_ui__(self):
if self.mode == "BCG":
self.ui.plainTextEdit_file_path_input_signal.setPlainText(
str((Path(self.root_path) /
ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) /
Path(ConfigParams.LABEL_CHECK_INPUT_BCG_FILENAME +
str(self.ui.spinBox_input_freq_signal.value()) +
ConfigParams.ENDSWITH_TXT))))
elif self.mode == "ECG":
self.ui.plainTextEdit_file_path_input_signal.setPlainText(
str((Path(self.root_path) /
ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) /
Path(ConfigParams.LABEL_CHECK_INPUT_ECG_FILENAME +
str(self.ui.spinBox_input_freq_signal.value()) +
ConfigParams.ENDSWITH_TXT))))
else:
raise ValueError
class MainWindow_label_check(QMainWindow):
def __init__(self):
super(MainWindow_label_check, self).__init__()
self.ui = Ui_MainWindow_label_check()
self.ui.setupUi(self)
self.mode = None
self.root_path = None
self.sampID = None
self.data = None
self.original_peak = None
self.corrected_peak = None
self.setting = None
# 初始化进度条
self.progressbar = None
PublicFunc.add_progressbar(self)
#初始化画框
self.fig = None
self.canvas = None
self.figToolbar = None
self.gs = None
self.ax0 = None
self.ax1 = None
self.line_processed_data_1 = None
self.line_processed_data_2 = None
self.point_peak_original = None
self.point_peak_corrected = None
self.msgBox = QMessageBox()
self.msgBox.setWindowTitle(Constants.MAINWINDOW_MSGBOX_TITLE)
@overrides
def show(self, mode, root_path, sampID):
super().show()
self.mode = mode
self.root_path = root_path
self.sampID = sampID
self.setting = SettingWindow(mode, 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():
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(2, 1, height_ratios=[1, 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)
self.ax0.tick_params(axis='x', colors=Constants.PLOT_COLOR_WHITE)
self.ax1 = self.fig.add_subplot(self.gs[1])
self.ax1.grid(True)
self.ax1.xaxis.set_major_formatter(ConfigParams.FORMATTER)
PublicFunc.__resetAllButton__(self, ButtonState)
self.ui.label_mode.setText(self.mode)
# self.ui.pushButton_input.clicked.connect(self.__slot_btn_input__)
self.ui.pushButton_input_setting.clicked.connect(self.setting.show)
# self.ui.pushButton_save.clicked.connect(self.__slot_btn_save__)
self.ui.doubleSpinBox_findpeaks_min_interval.editingFinished.connect(self.__update_config__)
self.ui.doubleSpinBox_findpeaks_min_height.editingFinished.connect(self.__update_config__)
self.ui.spinBox_moveLength.editingFinished.connect(self.__update_config__)
self.ui.spinBox_maxRange.editingFinished.connect(self.__update_config__)
self.ui.spinBox_moveSpeed.editingFinished.connect(self.__update_config__)
@overrides
def closeEvent(self, event):
PublicFunc.__disableAllButton__(self, ButtonState)
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
QApplication.processEvents()
# 清空画框
if self.line_processed_data_1 and self.line_processed_data_2 and self.point_peak_original and self.point_peak_corrected:
del self.line_processed_data_1
del self.line_processed_data_2
del self.point_peak_original
del self.point_peak_corrected
self.canvas.draw()
# 释放资源
del self.data
self.fig.clf()
plt.close(self.fig)
self.deleteLater()
collect()
self.canvas = None
event.accept()
@staticmethod
def __reset__():
ButtonState["Current"].update(ButtonState["Default"].copy())
def __plot__(self):
# 清空画框
if self.line_processed_data_1 and self.line_processed_data_2 and self.point_peak_original and self.point_peak_corrected:
try:
self.line_processed_data_1.remove()
self.line_processed_data_2.remove()
self.point_peak_original.remove()
self.point_peak_corrected.remove()
except ValueError:
pass
sender = self.sender()
if sender == self.ui.pushButton_input:
# self.point_RRIV, = self.ax0.plot(self.data.peak[2:], self.data.RRIV,
# 'r.',
# label=Constants.DETECT_RPEAK_PLOT_LABEL_RRIV)
# self.line_data, = self.ax1.plot(self.data.processed_data,
# color=Constants.PLOT_COLOR_BLUE,
# label=Constants.DETECT_RPEAK_PLOT_LABEL_ECG)
# self.point_peak, = self.ax1.plot(self.data.peak, self.data.processed_data[self.data.peak],
# 'r*',
# label=Constants.DETECT_RPEAK_PLOT_LABEL_R_PEAKS)
# self.line_interval, = self.ax1.plot(self.data.interval,
# color=Constants.PLOT_COLOR_GREEN,
# label=Constants.DETECT_RPEAK_PLOT_LABEL_INTERVAL)
self.ax0.legend(loc=Constants.PLOT_UPPER_RIGHT)
self.ax1.legend(loc=Constants.PLOT_UPPER_RIGHT)
status = True
info = Constants.DRAWING_FINISHED
else:
status = False
info = Constants.DRAWING_FAILURE
self.canvas.draw()
return status, info
def __update_config__(self):
Config["FindPeaks"]["MinInterval"] = self.ui.doubleSpinBox_findpeaks_min_interval.value()
Config["FindPeaks"]["MinHeight"] = self.ui.doubleSpinBox_findpeaks_min_height.value()
Config["CustomAutoplayArgs"]["MoveLength"] = self.ui.spinBox_moveLength.value()
Config["CustomAutoplayArgs"]["MaxRange"] = self.ui.spinBox_maxRange.value()
Config["CustomAutoplayArgs"]["MoveSpeed"] = self.ui.spinBox_moveSpeed.value()
class Data:
def __init__(self):
self.file_path_input_signal = Config["Path"]["Input_Signal"]
self.file_path_input_peak = Config["Path"]["Input_Peak"]
self.file_path_save = Config["Path"]["Save"]
self.raw_data = None
self.processed_data = None
self.peak = None

View File

@ -30,15 +30,18 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
self.ui = Ui_Signal_Label()
self.ui.setupUi(self)
# 消息弹窗初始化
self.msgBox = QMessageBox()
self.msgBox.setWindowTitle(Constants.MAINWINDOW_MSGBOX_TITLE)
self.__read_config__()
self.ui.plainTextEdit_root_path.setPlainText(Config["Path"]["Root"])
self.seek_sampID(Path(Config["Path"]["Root"]) / Path(ConfigParams.PUBLIC_PATH_ORGBCG_TEXT))
self.preprocess = None
# 消息弹窗初始化
self.msgBox = QMessageBox()
self.msgBox.setWindowTitle(Constants.MAINWINDOW_MSGBOX_TITLE)
self.detect_Jpeak = None
self.detect_Rpeak = None
self.label_check = None
# 绑定槽函数
self.ui.pushButton_open.clicked.connect(self.__slot_btn_open__)
@ -46,6 +49,8 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
self.ui.pushButton_preprocess_ECG.clicked.connect(self.__slot_btn_preprocess__)
self.ui.pushButton_detect_Jpeak.clicked.connect(self.__slot_btn_detect_Jpeak__)
self.ui.pushButton_detect_Rpeak.clicked.connect(self.__slot_btn_detect_Rpeak__)
self.ui.pushButton_label_check_BCG.clicked.connect(self.__slot_btn_label_check__)
self.ui.pushButton_label_check_ECG.clicked.connect(self.__slot_btn_label_check__)
@staticmethod
def __read_config__():
@ -88,9 +93,10 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
sampID = int(self.ui.comboBox_sampID.currentText())
if sender == self.ui.pushButton_preprocess_BCG:
mode = "BCG"
self.preprocess.show(mode, root_path, sampID)
elif sender == self.ui.pushButton_preprocess_ECG:
mode = "ECG"
else:
mode = "ModeNotExist"
self.preprocess.show(mode, root_path, sampID)
def __slot_btn_detect_Jpeak__(self):
@ -107,6 +113,21 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
sampID = int(self.ui.comboBox_sampID.currentText())
self.detect_Rpeak.show(root_path, sampID)
def __slot_btn_label_check__(self):
self.label_check = MainWindow_detect_Rpeak()
sender = self.sender()
root_path = self.ui.plainTextEdit_root_path.toPlainText()
sampID = int(self.ui.comboBox_sampID.currentText())
if sender == self.ui.pushButton_label_check_BCG:
mode = "BCG"
elif sender == self.ui.pushButton_label_check_ECG:
mode = "ECG"
else:
mode = "ModeNotExist"
self.label_check.show(mode, root_path, sampID)
def seek_sampID(self, path):
if not Path(path).exists():

View File

@ -2,7 +2,7 @@ from gc import collect
from pathlib import Path
import matplotlib.pyplot as plt
from PySide6.QtWidgets import QMessageBox, QMainWindow, QWidget, QPushButton, QProgressBar, QApplication
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
from matplotlib import gridspec
from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
@ -85,7 +85,7 @@ class SettingWindow(QMainWindow):
},
"Mode": self.mode
})
else:
elif self.mode == "ECG":
Config.update({
"Path": {
"Input": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
@ -99,6 +99,8 @@ class SettingWindow(QMainWindow):
},
"Mode": self.mode
})
else:
raise ValueError
# 数据回显
self.ui.spinBox_input_freq.setValue(Config["InputConfig"]["Freq"])
@ -144,7 +146,7 @@ class SettingWindow(QMainWindow):
Path(ConfigParams.PREPROCESS_SAVE_BCG_FILENAME +
str(self.ui.spinBox_output_freq.value()) +
ConfigParams.ENDSWITH_TXT))))
else:
elif self.mode == "ECG":
self.ui.plainTextEdit_file_path_input.setPlainText(
str((Path(self.root_path) /
ConfigParams.PUBLIC_PATH_PSG_TEXT /
@ -159,6 +161,8 @@ class SettingWindow(QMainWindow):
Path(ConfigParams.PREPROCESS_SAVE_ECG_FILENAME +
str(self.ui.spinBox_output_freq.value()) +
ConfigParams.ENDSWITH_TXT))))
else:
raise ValueError
class MainWindow_preprocess(QMainWindow):
@ -179,7 +183,7 @@ class MainWindow_preprocess(QMainWindow):
# 初始化进度条
self.progressbar = None
self.add_progressbar()
PublicFunc.add_progressbar(self)
#初始化画框
self.fig = None
@ -219,17 +223,19 @@ class MainWindow_preprocess(QMainWindow):
self.ax0.grid(True)
self.ax0.xaxis.set_major_formatter(ConfigParams.FORMATTER)
self.__resetAllButton__()
PublicFunc.__resetAllButton__(self, ButtonState)
self.ui.label_mode.setText(self.mode)
if self.mode == "BCG":
self.ui.spinBox_bandPassOrder.setValue(Config["Filter"]["BCGBandPassOrder"])
self.ui.doubleSpinBox_bandPassLow.setValue(Config["Filter"]["BCGBandPassLow"])
self.ui.doubleSpinBox_bandPassHigh.setValue(Config["Filter"]["BCGBandPassHigh"])
else:
elif self.mode == "ECG":
self.ui.spinBox_bandPassOrder.setValue(Config["Filter"]["ECGBandPassOrder"])
self.ui.doubleSpinBox_bandPassLow.setValue(Config["Filter"]["ECGBandPassLow"])
self.ui.doubleSpinBox_bandPassHigh.setValue(Config["Filter"]["ECGBandPassHigh"])
else:
raise ValueError
self.ui.pushButton_input.clicked.connect(self.__slot_btn_input__)
self.ui.pushButton_input_setting.clicked.connect(self.setting.show)
@ -242,9 +248,9 @@ class MainWindow_preprocess(QMainWindow):
@overrides
def closeEvent(self, event):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
QApplication.processEvents()
# 清空画框
@ -297,74 +303,22 @@ class MainWindow_preprocess(QMainWindow):
self.canvas.draw()
return status, info
def __disableAllButton__(self):
# 禁用所有按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并禁用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Current"].keys():
widget.setEnabled(False)
def __enableAllButton__(self):
# 启用按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Current"].keys():
widget.setEnabled(ButtonState["Current"][widget.objectName()])
def __resetAllButton__(self):
# 启用按钮
all_widgets = self.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in ButtonState["Default"].keys():
widget.setEnabled(ButtonState["Default"][widget.objectName()])
def __update_config__(self):
if self.mode == "BCG":
Config["Filter"]["BCGBandPassOrder"] = self.ui.spinBox_bandPassOrder.value()
Config["Filter"]["BCGBandPassLow"] = self.ui.doubleSpinBox_bandPassLow.value()
Config["Filter"]["BCGBandPassHigh"] = self.ui.doubleSpinBox_bandPassHigh.value()
else:
elif self.mode == "ECG":
Config["Filter"]["ECGBandPassOrder"] = self.ui.spinBox_bandPassOrder.value()
Config["Filter"]["ECGBandPassLow"] = self.ui.doubleSpinBox_bandPassLow.value()
Config["Filter"]["ECGBandPassHigh"] = self.ui.doubleSpinBox_bandPassHigh.value()
def finish_operation(self):
self.statusbar_show_msg(PublicFunc.format_status_msg(Constants.OPERATION_FINISHED))
self.progressbar.setValue(100)
QApplication.processEvents()
self.__enableAllButton__()
def add_progressbar(self):
self.progressbar = QProgressBar()
self.progressbar.setRange(0, 100)
self.progressbar.setValue(0)
self.progressbar.setStyleSheet(Constants.PROGRESSBAR_STYLE)
self.ui.statusbar.addPermanentWidget(self.progressbar)
def statusbar_show_msg(self, msg):
self.ui.statusbar.showMessage(msg)
def statusbar_clear_msg(self):
self.ui.statusbar.clearMessage()
else:
raise ValueError
def __slot_btn_input__(self):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
# 清空画框
if self.line_raw_data and self.line_processed_data:
@ -375,7 +329,7 @@ class MainWindow_preprocess(QMainWindow):
pass
self.canvas.draw()
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/1)" + Constants.INPUTTING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/1)" + Constants.INPUTTING_DATA))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -385,19 +339,19 @@ class MainWindow_preprocess(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_INFO)
MainWindow_preprocess.__reset__()
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def __slot_btn_view__(self):
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/2)" + Constants.PREPROCESS_PROCESSING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/2)" + Constants.PREPROCESS_PROCESSING_DATA))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -406,12 +360,12 @@ class MainWindow_preprocess(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_INFO)
self.statusbar_show_msg(PublicFunc.format_status_msg("(2/2)" + Constants.DRAWING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(2/2)" + Constants.DRAWING_DATA))
self.progressbar.setValue(50)
QApplication.processEvents()
@ -420,13 +374,13 @@ class MainWindow_preprocess(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_INFO)
ButtonState["Current"]["pushButton_save"] = True
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
def __slot_btn_save__(self):
@ -435,9 +389,9 @@ class MainWindow_preprocess(QMainWindow):
QMessageBox.Yes | QMessageBox.No,
QMessageBox.Yes)
if reply == QMessageBox.Yes:
self.__disableAllButton__()
PublicFunc.__disableAllButton__(self, ButtonState)
self.statusbar_show_msg(PublicFunc.format_status_msg("(1/1)" + Constants.SAVING_DATA))
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg("(1/1)" + Constants.SAVING_DATA))
self.progressbar.setValue(0)
QApplication.processEvents()
@ -457,13 +411,13 @@ class MainWindow_preprocess(QMainWindow):
if not status:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_ERROR)
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
return
else:
PublicFunc.text_output(self.ui, "(1/1)" + info, Constants.TIPS_TYPE_INFO)
PublicFunc.msgbox_output(self, info, Constants.TIPS_TYPE_INFO)
self.finish_operation()
PublicFunc.finish_operation(self, ButtonState)
class Data:
@ -506,12 +460,14 @@ class Data:
high_cut=Config["Filter"]["BCGBandPassHigh"],
order=Config["Filter"]["BCGBandPassOrder"],
sample_rate=Config["OutputConfig"]["Freq"])
else:
elif Config["Mode"] == "ECG":
self.processed_data = Butterworth_for_ECG_PreProcess(self.raw_data, type='bandpass',
low_cut=Config["Filter"]["ECGBandPassLow"],
high_cut=Config["Filter"]["ECGBandPassHigh"],
order=Config["Filter"]["ECGBandPassOrder"],
sample_rate=Config["OutputConfig"]["Freq"])
else:
raise ValueError
except Exception:
return False, Constants.PREPROCESS_PROCESS_FAILURE + Constants.PREPROCESS_FAILURE_REASON["Filter_Exception"]

View File

@ -94,6 +94,36 @@ class ConfigParams:
DETECT_RPEAK_SAVE_CHUNK_SIZE: int = 100
# 人工纠正
LABEL_CHECK_CONFIG_FILE_PATH: str = "./config/Config_label_check.yaml"
LABEL_CHECK_CONFIG_NEW_CONTENT = {
"InputConfig": {
"Freq": 1000
},
"Filter": {
"BCGBandPassOrder": 2,
"BCGBandPassLow": 2,
"BCGBandPassHigh": 10,
"ECGBandPassOrder": 2,
"ECGBandPassLow": 2,
"ECGBandPassHigh": 15
},
"FindPeaks" : {
"MinInterval": 1000,
"MinHeight": 0.5
},
"CustomAutoplayArgs": {
"MoveLength": 15000,
"MaxRange": 60000,
"MoveSpeed": 1000
}
}
LABEL_CHECK_INPUT_BCG_FILENAME: str = "DSbcg_sig_"
LABEL_CHECK_INPUT_JPEAK_FILENAME: str = "JPeak_revise"
LABEL_CHECK_SAVE_JPEAK_FILENAME: str = "JPeak_revise_corrected"
LABEL_CHECK_INPUT_ECG_FILENAME: str = "ECG_filter_"
LABEL_CHECK_INPUT_RPEAK_FILENAME: str = "final_Rpeak"
LABEL_CHECK_SAVE_RPEAK_FILENAME: str = "final_Rpeak_corrected"
LABEL_CHECK_SAVE_CHUNK_SIZE: int = 100
# 体动标注

View File

@ -25,6 +25,7 @@ class Constants:
OPERATION_FINISHED: str = "操作完成"
OPERATION_FAILURE: str = "操作失败"
OPERATION_CANCELED: str = "操作取消"
UNKNOWN_ERROR: str = "未知错误"
SHUTTING_DOWN: str = "正在释放内存资源"
@ -80,8 +81,8 @@ class Constants:
"Save_Exception": "(保存异常)"
}
PREPROCESS_PLOT_LABEL_ORIGINAL_DATA: str = "Original Data"
PREPROCESS_PLOT_LABEL_PROCESSED_DATA: str = "Processed Data"
PREPROCESS_PLOT_LABEL_ORIGINAL_DATA: str = "Original_Data"
PREPROCESS_PLOT_LABEL_PROCESSED_DATA: str = "Processed_Data"
PREPROCESS_OUTPUT_INPUT_AMP_OFFSET: int = 1850
# BCG的J峰算法定位
@ -153,6 +154,27 @@ class Constants:
DETECT_RPEAK_PLOT_LABEL_INTERVAL: str = "Interval"
# 人工纠正
LABEL_CHECK_PROCESSING_DATA: str = "正在处理数据"
LABEL_CHECK_PROCESS_FINISHED: str = "处理完成"
LABEL_CHECK_PROCESS_FAILURE: str = "处理失败"
LABEL_CHECK_FAILURE_REASON = {
"Data_Path_Not_Exist": "(数据路径不存在)",
"Read_Data_Exception": "(读取数据异常)",
"Method_Not_Exist": "(检测方法不存在)",
"Read_Method_Exception": "(读取方法异常)",
"Predict_Exception": "(峰值预测异常)",
"Raw_Data_Not_Exist": "(原始数据不存在)",
"Filter_Exception": "(滤波器异常)",
"Processed_Data_Not_Exist": "(处理后数据不存在)",
"Peak_Not_Exist": "(预测的峰值不存在)",
"Save_Exception": "(保存异常)"
}
LABEL_CHECK_PLOT_LABEL_BCG: str = "Data_Processed"
LABEL_CHECK_PLOT_LABEL_PEAK_ORIGINAL: str = "Peaks_Original"
LABEL_CHECK_PLOT_LABEL_PEAK_CORRECTED: str = "Peaks_Corrected"
# 体动标注

View File

@ -1,7 +1,7 @@
from datetime import datetime
from logging import error, info
from PySide6.QtWidgets import QMessageBox
from PySide6.QtWidgets import QMessageBox, QWidget, QPushButton, QProgressBar, QApplication
from func.utils.Constants import Constants
from func.utils.CustomException import TipsTypeValueNotExistError, MsgBoxTypeValueNotExistError
@ -94,3 +94,64 @@ class PublicFunc:
else:
raise MsgBoxTypeValueNotExistError()
main_window.msgBox.exec()
@staticmethod
def __disableAllButton__(mainWindow, buttonState):
# 禁用所有按钮
all_widgets = mainWindow.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并禁用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in buttonState["Current"].keys():
widget.setEnabled(False)
@staticmethod
def __enableAllButton__(mainWindow, buttonState):
# 启用按钮
all_widgets = mainWindow.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in buttonState["Current"].keys():
widget.setEnabled(buttonState["Current"][widget.objectName()])
@staticmethod
def __resetAllButton__(mainWindow, buttonState):
# 启用按钮
all_widgets = mainWindow.centralWidget().findChildren(QWidget)
# 迭代所有部件,查找按钮并启用它们
for widget in all_widgets:
if isinstance(widget, QPushButton):
if widget.objectName() in buttonState["Default"].keys():
widget.setEnabled(buttonState["Default"][widget.objectName()])
@staticmethod
def add_progressbar(mainWindow):
mainWindow.progressbar = QProgressBar()
mainWindow.progressbar.setRange(0, 100)
mainWindow.progressbar.setValue(0)
mainWindow.progressbar.setStyleSheet(Constants.PROGRESSBAR_STYLE)
mainWindow.ui.statusbar.addPermanentWidget(mainWindow.progressbar)
@staticmethod
def statusbar_show_msg(mainWindow, msg):
mainWindow.ui.statusbar.showMessage(msg)
@staticmethod
def statusbar_clear_msg(mainWindow):
mainWindow.ui.statusbar.clearMessage()
@staticmethod
def finish_operation(mainWindow, buttonState):
PublicFunc.statusbar_show_msg(mainWindow, PublicFunc.format_status_msg(Constants.OPERATION_FINISHED))
mainWindow.progressbar.setValue(100)
QApplication.processEvents()
PublicFunc.__enableAllButton__(mainWindow, buttonState)

View File

@ -22,12 +22,12 @@ from PySide6.QtWidgets import (QAbstractSpinBox, QApplication, QCheckBox, QDoubl
QTableWidget, QTableWidgetItem, QTextBrowser, QVBoxLayout,
QWidget)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(1920, 1080)
self.centralwidget = QWidget(MainWindow)
class Ui_MainWindow_label_check(object):
def setupUi(self, MainWindow_label_check):
if not MainWindow_label_check.objectName():
MainWindow_label_check.setObjectName(u"MainWindow_label_check")
MainWindow_label_check.resize(1920, 1080)
self.centralwidget = QWidget(MainWindow_label_check)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName(u"gridLayout")
@ -81,6 +81,15 @@ class Ui_MainWindow(object):
self.verticalLayout_2.addItem(self.verticalSpacer)
self.label_mode = QLabel(self.groupBox_left)
self.label_mode.setObjectName(u"label_mode")
font2 = QFont()
font2.setPointSize(14)
self.label_mode.setFont(font2)
self.label_mode.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.verticalLayout_2.addWidget(self.label_mode)
self.groupBox = QGroupBox(self.groupBox_left)
self.groupBox.setObjectName(u"groupBox")
self.gridLayout_2 = QGridLayout(self.groupBox)
@ -341,13 +350,13 @@ class Ui_MainWindow(object):
self.horizontalLayout_3.addWidget(self.checkBox)
self.pushButton = QPushButton(self.groupBox_left)
self.pushButton.setObjectName(u"pushButton")
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setFont(font1)
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)
self.horizontalLayout_3.addWidget(self.pushButton_save)
self.verticalLayout_2.addLayout(self.horizontalLayout_3)
@ -368,9 +377,10 @@ class Ui_MainWindow(object):
self.verticalLayout_2.setStretch(1, 1)
self.verticalLayout_2.setStretch(2, 1)
self.verticalLayout_2.setStretch(3, 1)
self.verticalLayout_2.setStretch(4, 6)
self.verticalLayout_2.setStretch(5, 1)
self.verticalLayout_2.setStretch(4, 1)
self.verticalLayout_2.setStretch(5, 6)
self.verticalLayout_2.setStretch(6, 1)
self.verticalLayout_2.setStretch(7, 1)
self.gridLayout.addWidget(self.groupBox_left, 0, 0, 1, 1)
@ -456,52 +466,53 @@ class Ui_MainWindow(object):
self.gridLayout.setColumnStretch(0, 2)
self.gridLayout.setColumnStretch(1, 6)
self.gridLayout.setColumnStretch(2, 2)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow)
MainWindow_label_check.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow_label_check)
self.statusbar.setObjectName(u"statusbar")
MainWindow.setStatusBar(self.statusbar)
MainWindow_label_check.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.retranslateUi(MainWindow_label_check)
QMetaObject.connectSlotsByName(MainWindow)
QMetaObject.connectSlotsByName(MainWindow_label_check)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"\u4eba\u5de5\u7ea0\u6b63", None))
self.groupBox_canvas.setTitle(QCoreApplication.translate("MainWindow", u"\u7ed8\u56fe\u533a", None))
self.groupBox_left.setTitle(QCoreApplication.translate("MainWindow", u"\u4eba\u5de5\u7ea0\u6b63", None))
self.pushButton_input_setting.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u8bbe\u7f6e", None))
self.pushButton_input.setText(QCoreApplication.translate("MainWindow", u"\u5f00\u59cb\u5bfc\u5165", None))
self.groupBox.setTitle(QCoreApplication.translate("MainWindow", u"\u5bfb\u5cf0\u53c2\u6570\u8bbe\u7f6e", None))
self.label_4.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5c0f\u95f4\u9694", None))
self.label_3.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5c0f\u9ad8\u5ea6", None))
self.groupBox_2.setTitle(QCoreApplication.translate("MainWindow", u"\u81ea\u52a8\u64ad\u653e", None))
self.pushButton_prev_move.setText(QCoreApplication.translate("MainWindow", u"< <(A)", None))
self.pushButton_pause.setText(QCoreApplication.translate("MainWindow", u"| |(S)", None))
self.pushButton_next_move.setText(QCoreApplication.translate("MainWindow", u"> >(D)", None))
self.groupBox_3.setTitle(QCoreApplication.translate("MainWindow", u"\u8bbe\u7f6e", None))
self.label_moveLength_preset_1.setText(QCoreApplication.translate("MainWindow", u"10000", None))
self.label_maxRange_preset_1.setText(QCoreApplication.translate("MainWindow", u"40000", None))
self.radioButton_move_preset_1.setText(QCoreApplication.translate("MainWindow", u"\u9884\u8bbe1", None))
self.label_moveSpeed_preset_3.setText(QCoreApplication.translate("MainWindow", u"500", None))
self.radioButton_move_preset_2.setText(QCoreApplication.translate("MainWindow", u"\u9884\u8bbe2", None))
self.label_maxRange_preset_3.setText(QCoreApplication.translate("MainWindow", u"100000", None))
self.label_maxRange_preset_2.setText(QCoreApplication.translate("MainWindow", u"80000", None))
self.radioButton_move_preset_3.setText(QCoreApplication.translate("MainWindow", u"\u9884\u8bbe3", None))
self.label_moveLength_preset_3.setText(QCoreApplication.translate("MainWindow", u"25000", None))
self.label_moveSpeed_preset_2.setText(QCoreApplication.translate("MainWindow", u"500", None))
self.label_moveLength_preset_2.setText(QCoreApplication.translate("MainWindow", u"20000", None))
self.radioButton_move_custom.setText(QCoreApplication.translate("MainWindow", u"\u81ea\u5b9a\u4e49", None))
self.label_moveSpeed_preset_1.setText(QCoreApplication.translate("MainWindow", u"500", None))
self.label_7.setText(QCoreApplication.translate("MainWindow", u"\u79fb\u52a8\u8ddd\u79bb", None))
self.label_6.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u8303\u56f4", None))
self.label_8.setText(QCoreApplication.translate("MainWindow", u"\u79fb\u52a8\u95f4\u9694(ms)", None))
self.checkBox.setText(QCoreApplication.translate("MainWindow", u"\u7ed8\u5236\u53c2\u8003\u7ebf", None))
self.pushButton.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u51fa\u6807\u7b7e", None))
self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow", u"\u65e5\u5fd7", None))
self.groupBox_right.setTitle(QCoreApplication.translate("MainWindow", u"\u5cf0\u503c\u5750\u6807\u548c\u4fe1\u606f", None))
self.label_9.setText(QCoreApplication.translate("MainWindow", u"\u6570\u636e\u957f\u5ea6(\u70b9\u6570)", None))
self.label_11.setText(QCoreApplication.translate("MainWindow", u"\u7ea0\u6b63\u524d\u5cf0\u503c\u4e2a\u6570", None))
self.label_12.setText(QCoreApplication.translate("MainWindow", u"\u7ea0\u6b63\u540e\u5cf0\u503c\u4e2a\u6570", None))
def retranslateUi(self, MainWindow_label_check):
MainWindow_label_check.setWindowTitle(QCoreApplication.translate("MainWindow_label_check", u"\u4eba\u5de5\u7ea0\u6b63", None))
self.groupBox_canvas.setTitle(QCoreApplication.translate("MainWindow_label_check", u"\u7ed8\u56fe\u533a", None))
self.groupBox_left.setTitle(QCoreApplication.translate("MainWindow_label_check", u"\u4eba\u5de5\u7ea0\u6b63", None))
self.pushButton_input_setting.setText(QCoreApplication.translate("MainWindow_label_check", u"\u5bfc\u5165\u8bbe\u7f6e", None))
self.pushButton_input.setText(QCoreApplication.translate("MainWindow_label_check", u"\u5f00\u59cb\u5bfc\u5165", None))
self.label_mode.setText(QCoreApplication.translate("MainWindow_label_check", u"\u5904\u7406\u7684\u4fe1\u53f7\u7c7b\u578b", None))
self.groupBox.setTitle(QCoreApplication.translate("MainWindow_label_check", u"\u5bfb\u5cf0\u53c2\u6570\u8bbe\u7f6e", None))
self.label_4.setText(QCoreApplication.translate("MainWindow_label_check", u"\u6700\u5c0f\u95f4\u9694", None))
self.label_3.setText(QCoreApplication.translate("MainWindow_label_check", u"\u6700\u5c0f\u9ad8\u5ea6", None))
self.groupBox_2.setTitle(QCoreApplication.translate("MainWindow_label_check", u"\u81ea\u52a8\u64ad\u653e", None))
self.pushButton_prev_move.setText(QCoreApplication.translate("MainWindow_label_check", u"< <(A)", None))
self.pushButton_pause.setText(QCoreApplication.translate("MainWindow_label_check", u"| |(S)", None))
self.pushButton_next_move.setText(QCoreApplication.translate("MainWindow_label_check", u"> >(D)", None))
self.groupBox_3.setTitle(QCoreApplication.translate("MainWindow_label_check", u"\u8bbe\u7f6e", None))
self.label_moveLength_preset_1.setText(QCoreApplication.translate("MainWindow_label_check", u"10000", None))
self.label_maxRange_preset_1.setText(QCoreApplication.translate("MainWindow_label_check", u"40000", None))
self.radioButton_move_preset_1.setText(QCoreApplication.translate("MainWindow_label_check", u"\u9884\u8bbe1", None))
self.label_moveSpeed_preset_3.setText(QCoreApplication.translate("MainWindow_label_check", u"500", None))
self.radioButton_move_preset_2.setText(QCoreApplication.translate("MainWindow_label_check", u"\u9884\u8bbe2", None))
self.label_maxRange_preset_3.setText(QCoreApplication.translate("MainWindow_label_check", u"100000", None))
self.label_maxRange_preset_2.setText(QCoreApplication.translate("MainWindow_label_check", u"80000", None))
self.radioButton_move_preset_3.setText(QCoreApplication.translate("MainWindow_label_check", u"\u9884\u8bbe3", None))
self.label_moveLength_preset_3.setText(QCoreApplication.translate("MainWindow_label_check", u"25000", None))
self.label_moveSpeed_preset_2.setText(QCoreApplication.translate("MainWindow_label_check", u"500", None))
self.label_moveLength_preset_2.setText(QCoreApplication.translate("MainWindow_label_check", u"20000", None))
self.radioButton_move_custom.setText(QCoreApplication.translate("MainWindow_label_check", u"\u81ea\u5b9a\u4e49", None))
self.label_moveSpeed_preset_1.setText(QCoreApplication.translate("MainWindow_label_check", u"500", None))
self.label_7.setText(QCoreApplication.translate("MainWindow_label_check", u"\u79fb\u52a8\u8ddd\u79bb", None))
self.label_6.setText(QCoreApplication.translate("MainWindow_label_check", u"\u6700\u5927\u8303\u56f4", None))
self.label_8.setText(QCoreApplication.translate("MainWindow_label_check", u"\u79fb\u52a8\u95f4\u9694(ms)", None))
self.checkBox.setText(QCoreApplication.translate("MainWindow_label_check", u"\u7ed8\u5236\u53c2\u8003\u7ebf", None))
self.pushButton_save.setText(QCoreApplication.translate("MainWindow_label_check", u"\u5bfc\u51fa\u6807\u7b7e", None))
self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow_label_check", u"\u65e5\u5fd7", None))
self.groupBox_right.setTitle(QCoreApplication.translate("MainWindow_label_check", u"\u5cf0\u503c\u5750\u6807\u548c\u4fe1\u606f", None))
self.label_9.setText(QCoreApplication.translate("MainWindow_label_check", u"\u6570\u636e\u957f\u5ea6(\u70b9\u6570)", None))
self.label_11.setText(QCoreApplication.translate("MainWindow_label_check", u"\u7ea0\u6b63\u524d\u5cf0\u503c\u4e2a\u6570", None))
self.label_12.setText(QCoreApplication.translate("MainWindow_label_check", u"\u7ea0\u6b63\u540e\u5cf0\u503c\u4e2a\u6570", None))
# retranslateUi

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<class>MainWindow_label_check</class>
<widget class="QMainWindow" name="MainWindow_label_check">
<property name="geometry">
<rect>
<x>0</x>
@ -42,7 +42,7 @@
<property name="title">
<string>人工纠正</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,1,1,1,6,1,1,0">
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,1,1,1,1,6,1,1,0">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
@ -96,6 +96,21 @@
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_mode">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>处理的信号类型</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
@ -584,7 +599,7 @@
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<widget class="QPushButton" name="pushButton_save">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>

View File

@ -20,12 +20,12 @@ from PySide6.QtWidgets import (QApplication, QDoubleSpinBox, QGridLayout, QGroup
QPushButton, QSizePolicy, QSpinBox, QStatusBar,
QVBoxLayout, QWidget)
class Ui_MainWindow_artifact_label_input_setting(object):
def setupUi(self, MainWindow_artifact_label_input_setting):
if not MainWindow_artifact_label_input_setting.objectName():
MainWindow_artifact_label_input_setting.setObjectName(u"MainWindow_artifact_label_input_setting")
MainWindow_artifact_label_input_setting.resize(540, 540)
self.centralwidget = QWidget(MainWindow_artifact_label_input_setting)
class Ui_MainWindow_label_check_input_setting(object):
def setupUi(self, MainWindow_label_check_input_setting):
if not MainWindow_label_check_input_setting.objectName():
MainWindow_label_check_input_setting.setObjectName(u"MainWindow_label_check_input_setting")
MainWindow_label_check_input_setting.resize(540, 540)
self.centralwidget = QWidget(MainWindow_label_check_input_setting)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName(u"gridLayout")
@ -166,33 +166,33 @@ class Ui_MainWindow_artifact_label_input_setting(object):
self.gridLayout.addWidget(self.pushButton_confirm, 1, 2, 1, 1)
MainWindow_artifact_label_input_setting.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow_artifact_label_input_setting)
MainWindow_label_check_input_setting.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow_label_check_input_setting)
self.statusbar.setObjectName(u"statusbar")
MainWindow_artifact_label_input_setting.setStatusBar(self.statusbar)
MainWindow_label_check_input_setting.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow_artifact_label_input_setting)
self.retranslateUi(MainWindow_label_check_input_setting)
QMetaObject.connectSlotsByName(MainWindow_artifact_label_input_setting)
QMetaObject.connectSlotsByName(MainWindow_label_check_input_setting)
# setupUi
def retranslateUi(self, MainWindow_artifact_label_input_setting):
MainWindow_artifact_label_input_setting.setWindowTitle(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u5bfc\u5165\u8bbe\u7f6e", None))
self.pushButton_cancel.setText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u53d6\u6d88", None))
self.groupBox.setTitle(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_input_signal.setTitle(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u9884\u5904\u7406\u540e\u7684\u4fe1\u53f7\u8def\u5f84", None))
self.label_2.setText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u91c7\u6837\u7387(Hz)\uff1a", None))
self.groupBox_2.setTitle(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u5e26\u901a\u6ee4\u6ce2\u8bbe\u7f6e", None))
self.label.setText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u9636\u6570", None))
self.label_3.setText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u622a\u6b62\u9891\u7387(Hz)", None))
self.label_4.setText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"~", None))
def retranslateUi(self, MainWindow_label_check_input_setting):
MainWindow_label_check_input_setting.setWindowTitle(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u5bfc\u5165\u8bbe\u7f6e", None))
self.pushButton_cancel.setText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u53d6\u6d88", None))
self.groupBox.setTitle(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_input_signal.setTitle(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u9884\u5904\u7406\u540e\u7684\u4fe1\u53f7\u8def\u5f84", None))
self.label_2.setText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u91c7\u6837\u7387(Hz)\uff1a", None))
self.groupBox_2.setTitle(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u5e26\u901a\u6ee4\u6ce2\u8bbe\u7f6e", None))
self.label.setText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u9636\u6570", None))
self.label_3.setText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u622a\u6b62\u9891\u7387(Hz)", None))
self.label_4.setText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"~", None))
self.plainTextEdit_file_path_input_signal.setPlainText("")
self.plainTextEdit_file_path_input_signal.setPlaceholderText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_input_peak.setTitle(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u7b97\u6cd5\u5b9a\u4f4d\u7684\u5cf0\u503c\u8def\u5f84", None))
self.plainTextEdit_file_path_input_signal.setPlaceholderText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_input_peak.setTitle(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u7b97\u6cd5\u5b9a\u4f4d\u7684\u5cf0\u503c\u8def\u5f84", None))
self.plainTextEdit_file_path_input_peak.setPlainText("")
self.plainTextEdit_file_path_input_peak.setPlaceholderText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_save.setTitle(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u4eba\u5de5\u7ea0\u6b63\u540e\u7684\u5cf0\u503c\u4fdd\u5b58\u8def\u5f84", None))
self.plainTextEdit_file_path_save.setPlaceholderText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u4fdd\u5b58\u8def\u5f84", None))
self.pushButton_confirm.setText(QCoreApplication.translate("MainWindow_artifact_label_input_setting", u"\u786e\u5b9a", None))
self.plainTextEdit_file_path_input_peak.setPlaceholderText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_save.setTitle(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u4eba\u5de5\u7ea0\u6b63\u540e\u7684\u5cf0\u503c\u4fdd\u5b58\u8def\u5f84", None))
self.plainTextEdit_file_path_save.setPlaceholderText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u4fdd\u5b58\u8def\u5f84", None))
self.pushButton_confirm.setText(QCoreApplication.translate("MainWindow_label_check_input_setting", u"\u786e\u5b9a", None))
# retranslateUi

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow_artifact_label_input_setting</class>
<widget class="QMainWindow" name="MainWindow_artifact_label_input_setting">
<class>MainWindow_label_check_input_setting</class>
<widget class="QMainWindow" name="MainWindow_label_check_input_setting">
<property name="geometry">
<rect>
<x>0</x>