diff --git a/.gitignore b/.gitignore index ea0da03..8c8c7cb 100644 --- a/.gitignore +++ b/.gitignore @@ -230,3 +230,8 @@ ipython_config.py # Remove previous ipynb_checkpoints # git rm -r .ipynb_checkpoints/ +./Data/* +./Data/PSG/* +./Data/XX/* +!./Data/PSG +!./Data/XX \ No newline at end of file diff --git a/RespCoarseAlign.py b/RespCoarseAlign.py index 050bd7b..95f734e 100644 --- a/RespCoarseAlign.py +++ b/RespCoarseAlign.py @@ -9,6 +9,7 @@ """ import sys +from datetime import datetime from pathlib import Path import pyedflib import numpy as np @@ -65,6 +66,7 @@ ButtonState = { "pushButton_EP10": False, "pushButton_EP100": False, "pushButton_SaveInfo": False, + "pushButton_ReadInfo": False, "pushButton_Exit": True}, "Current": { "pushButton_Refresh": True, @@ -80,6 +82,7 @@ ButtonState = { "pushButton_EP10": False, "pushButton_EP100": False, "pushButton_SaveInfo": False, + "pushButton_ReadInfo": False, "pushButton_Exit": True} } @@ -410,7 +413,7 @@ class Data: # 返回图片以便存到QPixImage return canvas.buffer_rgba(), width, height - def DrawPicOTryAlign(self): + def DrawPicTryAlign(self): fig = Figure(figsize=(8, 7), dpi=100) canvas = FigureCanvas(fig) max_x = max(self.processed_THO.shape[0] + self.Config["PSGConfig"]["PreA"], @@ -444,6 +447,67 @@ class Data: # 返回图片以便存到QPixImage return canvas.buffer_rgba(), width, height + def DrawPicByEpoch(self, epoch): + + PSG_SP = epoch * 30 * self.Config["ApplyFrequency"] + PSG_EP = (epoch + 6) * 30 * self.Config["ApplyFrequency"] + + XX_SP = PSG_SP - self.Config["pos"] + XX_EP = PSG_EP - self.Config["pos"] + + tho_seg = self.processed_THO[PSG_SP:PSG_EP] + xx_seg = self.processed_XX[XX_SP:XX_EP] * self.Config["XX_reverse"] + abd_seg = self.processed_ABD[PSG_SP:PSG_EP] + + fig = Figure(figsize=(8, 7), dpi=100) + canvas = FigureCanvas(fig) + # 根据PSG来和绘制 + ax1 = fig.add_subplot(321) + ax1.plot(np.linspace(PSG_SP, PSG_EP, len(tho_seg)), tho_seg) + tho_peaks, _ = signal.find_peaks(tho_seg, prominence=0, distance=3 * self.Config["ApplyFrequency"]) + ax1.plot(np.linspace(PSG_SP, PSG_EP, len(tho_seg))[tho_peaks], tho_seg[tho_peaks], "x") + + ax3 = fig.add_subplot(323) + ax3.plot(np.linspace(XX_SP, XX_EP, len(xx_seg)), xx_seg) + xx_peaks, _ = signal.find_peaks(xx_seg, prominence=0, distance=3 * self.Config["ApplyFrequency"]) + ax3.plot(np.linspace(XX_SP, XX_EP, len(xx_seg))[xx_peaks], xx_seg[xx_peaks], "x") + + ax2 = fig.add_subplot(325) + ax2.plot(np.linspace(PSG_SP, PSG_EP, len(abd_seg)), abd_seg) + abd_peaks, _ = signal.find_peaks(abd_seg, prominence=0, distance=3 * self.Config["ApplyFrequency"]) + ax2.plot(np.linspace(PSG_SP, PSG_EP, len(abd_seg))[abd_peaks], abd_seg[abd_peaks], "x") + + # 绘制间期 + ax4 = fig.add_subplot(322) + ax4.plot(np.linspace(PSG_SP, PSG_EP, len(np.diff(tho_peaks).repeat(self.Config["ApplyFrequency"]))), + np.diff(tho_peaks).repeat(self.Config["ApplyFrequency"]), alpha=0.5, label="tho") + ax4.plot(np.linspace(PSG_SP, PSG_EP, len(np.diff(xx_peaks).repeat(self.Config["ApplyFrequency"]))), + np.diff(xx_peaks).repeat(self.Config["ApplyFrequency"]), label="resp") + ax4.set_title("tho_interval") + ax4.legend() + ax4.set_ylim((10, 50)) + + ax5 = fig.add_subplot(324) + ax5.plot(np.linspace(XX_SP, XX_EP, len(np.diff(tho_peaks).repeat(self.Config["ApplyFrequency"]))), + np.diff(tho_peaks).repeat(self.Config["ApplyFrequency"])) + ax5.plot(np.linspace(XX_SP, XX_EP, len(np.diff(xx_peaks).repeat(self.Config["ApplyFrequency"]))), + np.diff(xx_peaks).repeat(self.Config["ApplyFrequency"]), label="resp") + ax5.set_title("resp_interval") + ax5.set_ylim((10, 50)) + + ax6 = fig.add_subplot(326) + ax6.plot(np.linspace(PSG_SP, PSG_EP, len(np.diff(abd_peaks).repeat(self.Config["ApplyFrequency"]))), + np.diff(abd_peaks).repeat(self.Config["ApplyFrequency"])) + ax6.plot(np.linspace(PSG_SP, PSG_EP, len(np.diff(xx_peaks).repeat(self.Config["ApplyFrequency"]))), + np.diff(xx_peaks).repeat(self.Config["ApplyFrequency"]), label="resp") + ax6.set_title("abd_interval") + ax6.set_ylim((10, 50)) + + width, height = fig.figbbox.width, fig.figbbox.height + fig.canvas.draw() + # 返回图片以便存到QPixImage + return canvas.buffer_rgba(), width, height + @njit("int64[:](int64[:],int64[:])", nogil=True, parallel=True) def get_Correlate(a, v): @@ -472,6 +536,12 @@ class MainWindow(QMainWindow): self.ui.pushButton_Refresh.setEnabled(True) self.ui.pushButton_OpenFile.setEnabled(True) + self.ui.checkBox_NABD.setEnabled(False) + self.ui.checkBox_NTHO.setEnabled(False) + self.ui.checkBox_PABD.setEnabled(False) + self.ui.checkBox_PTHO.setEnabled(False) + self.ui.checkBox_custom.setEnabled(False) + # 绑定事件 # 刷新键分别获取PSG和XX文件夹里面的数据,获取所有编号显示在下拉框,比对编号同时存在的可选,仅存在一个文件夹的编号不可选 @@ -480,15 +550,17 @@ class MainWindow(QMainWindow): self.ui.pushButton_Standardize.clicked.connect(self.__standardize__) self.ui.pushButton_CutOff.clicked.connect(self.__cutOff__) self.ui.pushButton_GetPos.clicked.connect(self.__getPosition__) - # self.ui.pushButton_Align.clicked.connect(self.__align__) - # self.ui.pushButton_JUMP.clicked.connect(self.__jump__) - # self.ui.pushButton_EM1.clicked.connect(self.__EM1__) - # self.ui.pushButton_EM10.clicked.connect(self.__EM10__) - # self.ui.pushButton_EM100.clicked.connect(self.__EM100__) - # self.ui.pushButton_EP1.clicked.connect(self.__EP1__) - # self.ui.pushButton_EP10.clicked.connect(self.__EP10__) - # self.ui.pushButton_EP100.clicked.connect(self.__EP100__) - # self.ui.pushButton_SaveInfo.clicked.connect(self.__saveInfo__) + self.ui.pushButton_JUMP.clicked.connect(self.__jump__) + # spin_custom 按下回车绑定事件 + self.ui.spinBox_SelectEpoch.editingFinished.connect(self.__jump__) + self.ui.pushButton_EM1.clicked.connect(self.__EpochChange__) + self.ui.pushButton_EM10.clicked.connect(self.__EpochChange__) + self.ui.pushButton_EM100.clicked.connect(self.__EpochChange__) + self.ui.pushButton_EP1.clicked.connect(self.__EpochChange__) + self.ui.pushButton_EP10.clicked.connect(self.__EpochChange__) + self.ui.pushButton_EP100.clicked.connect(self.__EpochChange__) + self.ui.pushButton_SaveInfo.clicked.connect(self.__saveInfo__) + self.ui.pushButton_ReadInfo.clicked.connect(self.__readInfo__) self.ui.pushButton_Exit.clicked.connect(self.__exit__) # 按下checkbox_NTHO、PTHO、 PABD、NABD后启用pushbutton_Align @@ -498,6 +570,136 @@ class MainWindow(QMainWindow): self.ui.checkBox_NABD.stateChanged.connect(self.__enableAlign__) self.ui.spinBox_custom.valueChanged.connect(self.__enableAlign__) + def __readInfo__(self): + """ + 读取信息 + 判断是否存在,不存在不读取并提示 + :return: + """ + sampNo = self.ui.comboBox_SelectFile.currentText() + if Path("./RespCoarseAlignInfo.csv").exists(): + df = pd.read_csv("./RespCoarseAlignInfo.csv") + print(df) + df["sampNo"] = df["sampNo"].astype(str) + df = df[df["sampNo"] == sampNo] + print(df) + if len(df) == 0: + QMessageBox.warning(self, "警告", f"记录中无编号{sampNo},请计算对齐") + return + # 去最后一个 + PSG_SampRate = df["PSG_SampRate"].values[-1] + XX_SampRate = df["XX_SampRate"].values[-1] + pos = df["pos"].values[-1] + epoch = df["epoch"].values[-1] + # 将信息写入界面 + self.ui.spinBox_PSGFreq.setValue(PSG_SampRate) + self.ui.spinBox_XXFreq.setValue(XX_SampRate) + self.ui.spinBox_SelectEpoch.setValue(epoch) + self.ui.spinBox_custom.setValue(pos) + + if pos > 0: + self.ui.spinBox_XXPreA.setValue(pos) + else: + self.ui.spinBox_PSGPreA.setValue(-pos) + # 加载到Conf中 + self.data.Config["PSGConfig"].update({"PreA": self.ui.spinBox_PSGPreA.value(), + "PreCut": self.ui.spinBox_PSGPreCut.value(), + "PostCut": self.ui.spinBox_PSGPostCut.value()}) + self.data.Config["XXConfig"].update({"PreA": self.ui.spinBox_XXPreA.value(), + "PreCut": self.ui.spinBox_XXPreCut.value(), + "PostCut": self.ui.spinBox_XXPostCut.value()}) + + relate = pos + reverse = 1 + self.data.Config["XX_reverse"] = reverse + self.data.Config["pos"] = relate + epoch_min = max(0, relate // 30 // self.data.Config["ApplyFrequency"] + 1) + epoch_max = min(len(self.data.processed_THO) // 30 // self.data.Config["ApplyFrequency"] - 1, + (len(self.data.processed_XX) - relate) // 30 // self.data.Config["ApplyFrequency"] - 1) + + self.ui.spinBox_SelectEpoch.setMinimum(epoch_min) + self.ui.spinBox_SelectEpoch.setMaximum(epoch_max) + self.ui.spinBox_SelectEpoch.setValue(epoch_min) + # set tooltip + self.ui.spinBox_SelectEpoch.setToolTip(f"最小值:{epoch_min}\n最大值:{epoch_max}") + self.ui.spinBox_SelectEpoch.setEnabled(True) + # 执行按下checkBox_custom + self.ui.checkBox_custom.setChecked(True) + ButtonState["Current"]["pushButton_JUMP"] = True + ButtonState["Current"]["pushButton_EM1"] = True + ButtonState["Current"]["pushButton_EM10"] = True + ButtonState["Current"]["pushButton_EM100"] = True + ButtonState["Current"]["pushButton_EP1"] = True + ButtonState["Current"]["pushButton_EP10"] = True + ButtonState["Current"]["pushButton_EP100"] = True + self.__enableAllButton__() + + else: + QMessageBox.warning(self, "警告", f"没有保存记录,请检查当前路径是否有RespCoarseAlignInfo.csv") + + def __saveInfo__(self): + """ + 保存信息 + 编号、PSG采样率、XinXiao采样率、 相差位置pos、观测Epoch、保存时间 + 使用dataframe 保存到 csv中 + 首先判断csv是否存在,不存在则新建,存在则追加 + :return: + """ + sampNo = self.ui.comboBox_SelectFile.currentText() + PSG_SampRate = self.ui.spinBox_PSGFreq.value() + XX_SampRate = self.ui.spinBox_XXFreq.value() + pos = self.data.Config["pos"] + epoch = self.ui.spinBox_SelectEpoch.value() + save_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + # 保存到csv中 + df = pd.DataFrame({"sampNo": [sampNo], "PSG_SampRate": [PSG_SampRate], "XX_SampRate": [XX_SampRate], + "pos": [pos], "epoch": [epoch], "save_time": [save_time]}) + if Path("./RespCoarseAlignInfo.csv").exists(): + df.to_csv("./RespCoarseAlignInfo.csv", mode="a", header=False, index=False) + else: + df.to_csv("./RespCoarseAlignInfo.csv", mode="w", header=True, index=False) + # noinspection PyUnresolvedReferences + QMessageBox.information(self, "提示", "保存成功", QMessageBox.Ok) + + def __EpochChange__(self): + # 获取当前值 + value = self.ui.spinBox_SelectEpoch.value() + # print(self.sender()) + # print(self.sender() == self.ui.pushButton_EM1) + # 判断按键 + if self.sender() == self.ui.pushButton_EM1: + epoch = max(self.ui.spinBox_SelectEpoch.minimum(), value - 1) + elif self.sender() == self.ui.pushButton_EM10: + epoch = max(self.ui.spinBox_SelectEpoch.minimum(), value - 10) + elif self.sender() == self.ui.pushButton_EM100: + epoch = max(self.ui.spinBox_SelectEpoch.minimum(), value - 100) + elif self.sender() == self.ui.pushButton_EP1: + epoch = min(self.ui.spinBox_SelectEpoch.maximum(), value + 1) + elif self.sender() == self.ui.pushButton_EP10: + epoch = min(self.ui.spinBox_SelectEpoch.maximum(), value + 10) + elif self.sender() == self.ui.pushButton_EP100: + epoch = min(self.ui.spinBox_SelectEpoch.maximum(), value + 100) + else: + return + # print(epoch) + self.ui.spinBox_SelectEpoch.setValue(epoch) + QApplication.processEvents() + self.__jump__() + + def __jump__(self): + + self.__disableAllButton__() + self.ui.label_Info.setText("开始绘制···") + self.ui.progressBar.setValue(0) + # 获取选择的Epoch + epoch = self.ui.spinBox_SelectEpoch.value() + # 绘制图像 + self.__plot__(epoch=epoch) + self.ui.progressBar.setValue(100) + self.ui.label_Info.setText(f"Epoch: {epoch}, 绘制完成") + self.__enableAllButton__() + def __enableAlign__(self): self.__disableAllButton__() self.ui.label_Info.setText("绘制对齐图像···") @@ -505,14 +707,19 @@ class MainWindow(QMainWindow): QApplication.processEvents() if self.ui.checkBox_NTHO.isChecked(): relate = int(self.ui.checkBox_NTHO.text()) + reverse = -1 elif self.ui.checkBox_PTHO.isChecked(): relate = int(self.ui.checkBox_PTHO.text()) + reverse = 1 elif self.ui.checkBox_PABD.isChecked(): relate = int(self.ui.checkBox_PABD.text()) + reverse = 1 elif self.ui.checkBox_NABD.isChecked(): relate = int(self.ui.checkBox_NABD.text()) + reverse = -1 elif self.ui.checkBox_custom.isChecked(): relate = self.ui.spinBox_custom.value() + reverse = 1 else: return @@ -520,8 +727,27 @@ class MainWindow(QMainWindow): self.data.Config["pos"] = relate self.__plot__() self.ui.label_Info.setText("相对位置:{}".format(relate)) + + # 设置epoch上下限 + self.data.Config["XX_reverse"] = reverse + epoch_min = max(0, relate // 30 // self.data.Config["ApplyFrequency"] + 1) + epoch_max = min(len(self.data.processed_THO) // 30 // self.data.Config["ApplyFrequency"] - 1, + (len(self.data.processed_XX) - relate) // 30 // self.data.Config["ApplyFrequency"] - 1) + self.ui.spinBox_SelectEpoch.setMinimum(epoch_min) + self.ui.spinBox_SelectEpoch.setMaximum(epoch_max) + self.ui.spinBox_SelectEpoch.setValue(epoch_min) + # set tooltip + self.ui.spinBox_SelectEpoch.setToolTip(f"最小值:{epoch_min}\n最大值:{epoch_max}") + self.ui.spinBox_SelectEpoch.setEnabled(True) + ButtonState["Current"]["pushButton_JUMP"] = True + ButtonState["Current"]["pushButton_EM1"] = True + ButtonState["Current"]["pushButton_EM10"] = True + ButtonState["Current"]["pushButton_EM100"] = True + ButtonState["Current"]["pushButton_EP1"] = True + ButtonState["Current"]["pushButton_EP10"] = True + ButtonState["Current"]["pushButton_EP100"] = True + ButtonState["Current"]["pushButton_SaveInfo"] = True self.__enableAllButton__() - self.ui.pushButton_JUMP.setEnabled(True) def __getPosition__(self): # 根据截断选择,对信号进行互相关操作,得到最大值的位置 @@ -574,12 +800,19 @@ class MainWindow(QMainWindow): tho_max2 = np.argmax(tho_relate2) abd_max = np.argmax(abd_relate) abd_max2 = np.argmax(abd_relate2) - pre = self.data.Config["PSGConfig"]["PreCut"] + self.data.Config["PSGConfig"]["PreA"] + pre = self.data.Config["PSGConfig"]["PreCut"] + self.data.Config["XXConfig"]["PostCut"] + bias = pre - len(self.data.processed_XX) + 1 self.ui.checkBox_PABD.setText(str(abd_max + bias)) self.ui.checkBox_PTHO.setText(str(tho_max + bias)) self.ui.checkBox_NABD.setText(str(abd_max2 + bias)) self.ui.checkBox_NTHO.setText(str(tho_max2 + bias)) + self.ui.checkBox_PABD.setEnabled(True) + self.ui.checkBox_PTHO.setEnabled(True) + self.ui.checkBox_NABD.setEnabled(True) + self.ui.checkBox_NTHO.setEnabled(True) + self.ui.checkBox_custom.setEnabled(True) + # print(abd_max2) self.ui.progressBar.setValue(100) self.ui.label_Info.setText("计算完成") self.__enableAllButton__() @@ -600,10 +833,18 @@ class MainWindow(QMainWindow): self.ui.checkBox_custom.setChecked(False) self.ui.spinBox_SelectEpoch.setValue(0) self.ui.spinBox_custom.setValue(0) - self.ui.checkBox_PABD.setText("备选1") - self.ui.checkBox_PTHO.setText("备选2") - self.ui.checkBox_NABD.setText("备选3") - self.ui.checkBox_NTHO.setText("备选4") + self.ui.spinBox_custom.setEnabled(False) + self.ui.spinBox_SelectEpoch.setToolTip("") + self.ui.checkBox_PABD.setText("备选3") + self.ui.checkBox_PTHO.setText("备选1") + self.ui.checkBox_NABD.setText("备选4") + self.ui.checkBox_NTHO.setText("备选2") + self.ui.checkBox_PABD.setEnabled(False) + self.ui.checkBox_PTHO.setEnabled(False) + self.ui.checkBox_NABD.setEnabled(False) + self.ui.checkBox_NTHO.setEnabled(False) + self.ui.checkBox_custom.setEnabled(False) + self.ui.spinBox_SelectEpoch.setMinimum(0) def __cutOff__(self): self.ui.label_Info.setText("开始绘制···") @@ -635,15 +876,29 @@ class MainWindow(QMainWindow): elif self.sender() == self.ui.pushButton_GetPos: buffer, width, height = self.data.DrawPicCorrelate(*args, **kwargs) elif self.sender() == self.ui.checkBox_NTHO: - buffer, width, height = self.data.DrawPicOTryAlign() + buffer, width, height = self.data.DrawPicTryAlign() elif self.sender() == self.ui.checkBox_NABD: - buffer, width, height = self.data.DrawPicOTryAlign() + buffer, width, height = self.data.DrawPicTryAlign() elif self.sender() == self.ui.checkBox_PTHO: - buffer, width, height = self.data.DrawPicOTryAlign() + buffer, width, height = self.data.DrawPicTryAlign() elif self.sender() == self.ui.checkBox_PABD: - buffer, width, height = self.data.DrawPicOTryAlign() + buffer, width, height = self.data.DrawPicTryAlign() elif self.sender() == self.ui.spinBox_custom: - buffer, width, height = self.data.DrawPicOTryAlign() + buffer, width, height = self.data.DrawPicTryAlign() + elif self.sender() == self.ui.pushButton_JUMP: + buffer, width, height = self.data.DrawPicByEpoch(*args, **kwargs) + elif self.sender() == self.ui.pushButton_EM1: + buffer, width, height = self.data.DrawPicByEpoch(*args, **kwargs) + elif self.sender() == self.ui.pushButton_EM10: + buffer, width, height = self.data.DrawPicByEpoch(*args, **kwargs) + elif self.sender() == self.ui.pushButton_EM100: + buffer, width, height = self.data.DrawPicByEpoch(*args, **kwargs) + elif self.sender() == self.ui.pushButton_EP1: + buffer, width, height = self.data.DrawPicByEpoch(*args, **kwargs) + elif self.sender() == self.ui.pushButton_EP10: + buffer, width, height = self.data.DrawPicByEpoch(*args, **kwargs) + elif self.sender() == self.ui.pushButton_EP100: + buffer, width, height = self.data.DrawPicByEpoch(*args, **kwargs) else: return # 显示到labelPic上 @@ -681,12 +936,12 @@ class MainWindow(QMainWindow): sorted(PSGFiles) sorted(XXFiles) # 获取两文件夹下同时存在的编号 - print(PSGFiles, XXFiles) + # print(PSGFiles, XXFiles) Files = list(set(PSGFiles).intersection(set(XXFiles))) # 获取两文件夹下仅存在一个的编号 FilesOnlyInPSG = list(set(PSGFiles).difference(set(XXFiles))) FilesOnlyInXX = list(set(XXFiles).difference(set(PSGFiles))) - print(Files, FilesOnlyInPSG, FilesOnlyInXX) + # print(Files, FilesOnlyInPSG, FilesOnlyInXX) # 均显示到下拉框 self.ui.comboBox_SelectFile.clear() self.ui.comboBox_SelectFile.addItems([file for file in Files]) @@ -803,6 +1058,7 @@ class MainWindow(QMainWindow): self.__plot__() self.ui.progressBar.setValue(100) ButtonState["Current"]["pushButton_CutOff"] = True + ButtonState["Current"]["pushButton_ReadInfo"] = True self.__enableAllButton__() diff --git a/ui/Mian.py b/ui/Mian.py index 5648eba..986b8d6 100644 --- a/ui/Mian.py +++ b/ui/Mian.py @@ -51,7 +51,7 @@ class Ui_mainWindow(object): self.groupBox.setObjectName(u"groupBox") self.verticalLayoutWidget_7 = QWidget(self.groupBox) self.verticalLayoutWidget_7.setObjectName(u"verticalLayoutWidget_7") - self.verticalLayoutWidget_7.setGeometry(QRect(10, 20, 281, 61)) + self.verticalLayoutWidget_7.setGeometry(QRect(10, 20, 283, 61)) self.verticalLayout_8 = QVBoxLayout(self.verticalLayoutWidget_7) self.verticalLayout_8.setObjectName(u"verticalLayout_8") self.verticalLayout_8.setContentsMargins(0, 0, 0, 0) @@ -277,7 +277,7 @@ class Ui_mainWindow(object): self.groupBox_5.setObjectName(u"groupBox_5") self.verticalLayoutWidget_3 = QWidget(self.groupBox_5) self.verticalLayoutWidget_3.setObjectName(u"verticalLayoutWidget_3") - self.verticalLayoutWidget_3.setGeometry(QRect(10, 20, 281, 121)) + self.verticalLayoutWidget_3.setGeometry(QRect(10, 20, 281, 131)) self.verticalLayout_3 = QVBoxLayout(self.verticalLayoutWidget_3) self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) @@ -454,7 +454,7 @@ class Ui_mainWindow(object): self.pushButton_CutOff.setObjectName(u"pushButton_CutOff") sizePolicy.setHeightForWidth(self.pushButton_CutOff.sizePolicy().hasHeightForWidth()) self.pushButton_CutOff.setSizePolicy(sizePolicy) - self.pushButton_CutOff.setMinimumSize(QSize(85, 0)) + self.pushButton_CutOff.setMinimumSize(QSize(60, 0)) self.pushButton_CutOff.setMaximumSize(QSize(85, 16777215)) self.horizontalLayout_8.addWidget(self.pushButton_CutOff) @@ -467,6 +467,8 @@ class Ui_mainWindow(object): self.pushButton_GetPos.setObjectName(u"pushButton_GetPos") sizePolicy1.setHeightForWidth(self.pushButton_GetPos.sizePolicy().hasHeightForWidth()) self.pushButton_GetPos.setSizePolicy(sizePolicy1) + self.pushButton_GetPos.setMinimumSize(QSize(60, 0)) + self.pushButton_GetPos.setMaximumSize(QSize(85, 16777215)) self.horizontalLayout_8.addWidget(self.pushButton_GetPos) @@ -474,6 +476,17 @@ class Ui_mainWindow(object): self.horizontalLayout_8.addItem(self.horizontalSpacer_9) + self.pushButton_ReadInfo = QPushButton(self.verticalLayoutWidget_3) + self.pushButton_ReadInfo.setObjectName(u"pushButton_ReadInfo") + self.pushButton_ReadInfo.setMinimumSize(QSize(60, 0)) + self.pushButton_ReadInfo.setMaximumSize(QSize(85, 16777215)) + + self.horizontalLayout_8.addWidget(self.pushButton_ReadInfo) + + self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_8.addItem(self.horizontalSpacer_7) + self.verticalLayout_3.addLayout(self.horizontalLayout_8) @@ -530,6 +543,8 @@ class Ui_mainWindow(object): self.spinBox_custom.setEnabled(False) self.spinBox_custom.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) self.spinBox_custom.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_custom.setMinimum(-1000000) + self.spinBox_custom.setMaximum(1000000) self.horizontalLayout_11.addWidget(self.spinBox_custom) @@ -585,26 +600,6 @@ class Ui_mainWindow(object): self.verticalLayout_5.addLayout(self.horizontalLayout_13) - self.horizontalLayout_14 = QHBoxLayout() - self.horizontalLayout_14.setObjectName(u"horizontalLayout_14") - self.pushButton_EM1 = QPushButton(self.verticalLayoutWidget_5) - self.pushButton_EM1.setObjectName(u"pushButton_EM1") - - self.horizontalLayout_14.addWidget(self.pushButton_EM1) - - self.pushButton_EM10 = QPushButton(self.verticalLayoutWidget_5) - self.pushButton_EM10.setObjectName(u"pushButton_EM10") - - self.horizontalLayout_14.addWidget(self.pushButton_EM10) - - self.pushButton_EM100 = QPushButton(self.verticalLayoutWidget_5) - self.pushButton_EM100.setObjectName(u"pushButton_EM100") - - self.horizontalLayout_14.addWidget(self.pushButton_EM100) - - - self.verticalLayout_5.addLayout(self.horizontalLayout_14) - self.horizontalLayout_12 = QHBoxLayout() self.horizontalLayout_12.setObjectName(u"horizontalLayout_12") self.pushButton_EP1 = QPushButton(self.verticalLayoutWidget_5) @@ -625,6 +620,26 @@ class Ui_mainWindow(object): self.verticalLayout_5.addLayout(self.horizontalLayout_12) + self.horizontalLayout_14 = QHBoxLayout() + self.horizontalLayout_14.setObjectName(u"horizontalLayout_14") + self.pushButton_EM1 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EM1.setObjectName(u"pushButton_EM1") + + self.horizontalLayout_14.addWidget(self.pushButton_EM1) + + self.pushButton_EM10 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EM10.setObjectName(u"pushButton_EM10") + + self.horizontalLayout_14.addWidget(self.pushButton_EM10) + + self.pushButton_EM100 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EM100.setObjectName(u"pushButton_EM100") + + self.horizontalLayout_14.addWidget(self.pushButton_EM100) + + + self.verticalLayout_5.addLayout(self.horizontalLayout_14) + self.verticalLayout.addWidget(self.groupBox_6) @@ -766,7 +781,8 @@ class Ui_mainWindow(object): self.spinBox_PSGPostCut.setPrefix("") self.label_23.setText(QCoreApplication.translate("mainWindow", u"\u5fc3\u6653_Post:", None)) self.pushButton_CutOff.setText(QCoreApplication.translate("mainWindow", u"\u5e94\u7528", None)) - self.pushButton_GetPos.setText(QCoreApplication.translate("mainWindow", u"\u83b7\u53d6\u5bf9\u9f50\u4f4d\u7f6e", None)) + self.pushButton_GetPos.setText(QCoreApplication.translate("mainWindow", u"\u8ba1\u7b97\u5bf9\u9f50", None)) + self.pushButton_ReadInfo.setText(QCoreApplication.translate("mainWindow", u"\u8bfb\u53d6\u5bf9\u9f50", None)) self.groupBox_4.setTitle(QCoreApplication.translate("mainWindow", u"\u5bf9\u9f50\u8d77\u59cb\u4f4d\u7f6e", None)) self.checkBox_PTHO.setText(QCoreApplication.translate("mainWindow", u"\u5907\u90091", None)) self.checkBox_NTHO.setText(QCoreApplication.translate("mainWindow", u"\u5907\u90092", None)) @@ -776,14 +792,14 @@ class Ui_mainWindow(object): self.groupBox_6.setTitle(QCoreApplication.translate("mainWindow", u"\u5c40\u90e8\u89c2\u6d4b", None)) self.label_4.setText(QCoreApplication.translate("mainWindow", u"Epoch:", None)) self.pushButton_JUMP.setText(QCoreApplication.translate("mainWindow", u"\u8df3\u8f6c", None)) - self.pushButton_EM1.setText(QCoreApplication.translate("mainWindow", u"Epoch-1", None)) - self.pushButton_EM10.setText(QCoreApplication.translate("mainWindow", u"Epoch-10", None)) - self.pushButton_EM100.setText(QCoreApplication.translate("mainWindow", u"Epoch-100", None)) self.pushButton_EP1.setText(QCoreApplication.translate("mainWindow", u"Epoch+1", None)) self.pushButton_EP10.setText(QCoreApplication.translate("mainWindow", u"Epoch+10", None)) self.pushButton_EP100.setText(QCoreApplication.translate("mainWindow", u"Epoch+100", None)) + self.pushButton_EM1.setText(QCoreApplication.translate("mainWindow", u"Epoch-1", None)) + self.pushButton_EM10.setText(QCoreApplication.translate("mainWindow", u"Epoch-10", None)) + self.pushButton_EM100.setText(QCoreApplication.translate("mainWindow", u"Epoch-100", None)) self.groupBox_2.setTitle(QCoreApplication.translate("mainWindow", u"\u4fdd\u5b58", None)) - self.pushButton_SaveInfo.setText(QCoreApplication.translate("mainWindow", u"\u4fdd\u5b58\u53c2\u6570", None)) + self.pushButton_SaveInfo.setText(QCoreApplication.translate("mainWindow", u"\u4fdd\u5b58\u5bf9\u9f50", None)) self.pushButton_Exit.setText(QCoreApplication.translate("mainWindow", u"\u9000\u51fa", None)) self.label_Info.setText(QCoreApplication.translate("mainWindow", u"Info", None)) self.label_Pic.setText(QCoreApplication.translate("mainWindow", u"TextLabel", None)) diff --git a/ui/Mian.ui b/ui/Mian.ui index a6c4af4..e923bc0 100644 --- a/ui/Mian.ui +++ b/ui/Mian.ui @@ -60,7 +60,7 @@ 10 20 - 281 + 283 61 @@ -493,7 +493,7 @@ 10 20 281 - 121 + 131 @@ -957,7 +957,7 @@ - 85 + 60 0 @@ -993,8 +993,20 @@ 0 + + + 60 + 0 + + + + + 85 + 16777215 + + - 获取对齐位置 + 计算对齐 @@ -1011,6 +1023,38 @@ + + + + + 60 + 0 + + + + + 85 + 16777215 + + + + 读取对齐 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -1099,6 +1143,12 @@ QAbstractSpinBox::NoButtons + + -1000000 + + + 1000000 + @@ -1199,31 +1249,6 @@ - - - - - - Epoch-1 - - - - - - - Epoch-10 - - - - - - - Epoch-100 - - - - - @@ -1249,6 +1274,31 @@ + + + + + + Epoch-1 + + + + + + + Epoch-10 + + + + + + + Epoch-100 + + + + + @@ -1268,7 +1318,7 @@ - 保存参数 + 保存对齐