1、精简部分公共代码到PublicFunc.py中
2、完成了<人工纠正>的部分代码
This commit is contained in:
@ -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):
|
||||
|
||||
|
||||
@ -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
348
func/Module_label_check.py
Normal 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
|
||||
@ -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():
|
||||
|
||||
@ -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"]
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
# 体动标注
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
# 体动标注
|
||||
|
||||
|
||||
@ -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)
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
Reference in New Issue
Block a user