예제 #1
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(505, 449)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setMinimumSize(QtCore.QSize(419, 323))
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.centralwidget.sizePolicy().hasHeightForWidth())
        self.centralwidget.setSizePolicy(sizePolicy)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setContentsMargins(2, 2, 2, 2)
        self.gridLayout.setSpacing(2)
        self.gridLayout.setObjectName("gridLayout")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setSizeConstraint(
            QtWidgets.QLayout.SetDefaultConstraint)
        self.verticalLayout.setContentsMargins(4, 4, 4, 4)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setSizeConstraint(
            QtWidgets.QLayout.SetDefaultConstraint)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.serialLed = LedIndicator(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.serialLed.sizePolicy().hasHeightForWidth())
        self.serialLed.setSizePolicy(sizePolicy)
        self.serialLed.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.serialLed.setText("")
        self.serialLed.setObjectName("serialLed")
        self.horizontalLayout.addWidget(self.serialLed)
        self.label = QtWidgets.QLabel(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox.sizePolicy().hasHeightForWidth())
        self.groupBox.setSizePolicy(sizePolicy)
        self.groupBox.setMinimumSize(QtCore.QSize(0, 160))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setBold(True)
        font.setWeight(75)
        self.groupBox.setFont(font)
        self.groupBox.setFocusPolicy(QtCore.Qt.NoFocus)
        self.groupBox.setAcceptDrops(False)
        self.groupBox.setAutoFillBackground(True)
        self.groupBox.setStyleSheet("")
        self.groupBox.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox.setFlat(False)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox)
        self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.frame = QtWidgets.QFrame(self.groupBox)
        self.frame.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.gridLayout_10 = QtWidgets.QGridLayout(self.frame)
        self.gridLayout_10.setObjectName("gridLayout_10")
        self.pbStart = QtWidgets.QPushButton(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.pbStart.sizePolicy().hasHeightForWidth())
        self.pbStart.setSizePolicy(sizePolicy)
        self.pbStart.setMinimumSize(QtCore.QSize(40, 45))
        self.pbStart.setStyleSheet("background-color: rgb(201, 201, 201);")
        self.pbStart.setFlat(False)
        self.pbStart.setObjectName("pbStart")
        self.gridLayout_10.addWidget(self.pbStart, 1, 0, 1, 1)
        self.pbStop = QtWidgets.QPushButton(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.pbStop.sizePolicy().hasHeightForWidth())
        self.pbStop.setSizePolicy(sizePolicy)
        self.pbStop.setMinimumSize(QtCore.QSize(40, 45))
        self.pbStop.setStyleSheet("background-color: rgb(201, 201, 201);")
        self.pbStop.setObjectName("pbStop")
        self.gridLayout_10.addWidget(self.pbStop, 1, 2, 1, 1)
        self.timeLCD = QtWidgets.QLCDNumber(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.timeLCD.sizePolicy().hasHeightForWidth())
        self.timeLCD.setSizePolicy(sizePolicy)
        self.timeLCD.setMinimumSize(QtCore.QSize(60, 50))
        self.timeLCD.setStyleSheet("background-color: rgb(227, 227, 227);")
        self.timeLCD.setFrameShadow(QtWidgets.QFrame.Raised)
        self.timeLCD.setObjectName("timeLCD")
        self.gridLayout_10.addWidget(self.timeLCD, 3, 1, 1, 2)
        self.label_2 = QtWidgets.QLabel(self.frame)
        self.label_2.setAutoFillBackground(False)
        self.label_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.gridLayout_10.addWidget(self.label_2, 3, 0, 1, 1)
        self.pbSnap = QtWidgets.QPushButton(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.pbSnap.sizePolicy().hasHeightForWidth())
        self.pbSnap.setSizePolicy(sizePolicy)
        self.pbSnap.setMinimumSize(QtCore.QSize(40, 45))
        self.pbSnap.setStyleSheet("background-color: rgb(201, 201, 201);")
        self.pbSnap.setObjectName("pbSnap")
        self.gridLayout_10.addWidget(self.pbSnap, 1, 1, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.frame)
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.gridLayout_10.addWidget(self.label_3, 0, 0, 1, 1)
        self.modCB = QtWidgets.QComboBox(self.frame)
        self.modCB.setMinimumSize(QtCore.QSize(0, 35))
        self.modCB.setStyleSheet("color: rgb(0, 0, 0);\n"
                                 "background-color: rgb(237, 237, 237);")
        self.modCB.setObjectName("modCB")
        self.modCB.addItem("")
        self.modCB.addItem("")
        self.gridLayout_10.addWidget(self.modCB, 0, 1, 1, 2)
        self.gridLayout_2.addWidget(self.frame, 4, 2, 1, 1)
        self.verticalLayout.addWidget(self.groupBox)
        self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setBold(True)
        font.setWeight(75)
        self.groupBox_3.setFont(font)
        self.groupBox_3.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox_3.setObjectName("groupBox_3")
        self.gridLayout_8 = QtWidgets.QGridLayout(self.groupBox_3)
        self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_8.setSpacing(0)
        self.gridLayout_8.setObjectName("gridLayout_8")
        self.tabWidget = QtWidgets.QTabWidget(self.groupBox_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tabWidget.sizePolicy().hasHeightForWidth())
        self.tabWidget.setSizePolicy(sizePolicy)
        self.tabWidget.setMinimumSize(QtCore.QSize(0, 100))
        self.tabWidget.setTabPosition(QtWidgets.QTabWidget.East)
        self.tabWidget.setElideMode(QtCore.Qt.ElideMiddle)
        self.tabWidget.setTabBarAutoHide(False)
        self.tabWidget.setObjectName("tabWidget")
        self.tabFit = QtWidgets.QWidget()
        self.tabFit.setObjectName("tabFit")
        self.gridLayout_11 = QtWidgets.QGridLayout(self.tabFit)
        self.gridLayout_11.setContentsMargins(6, 6, 6, 6)
        self.gridLayout_11.setObjectName("gridLayout_11")
        self.dropFitType = QtWidgets.QComboBox(self.tabFit)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.dropFitType.sizePolicy().hasHeightForWidth())
        self.dropFitType.setSizePolicy(sizePolicy)
        self.dropFitType.setMinimumSize(QtCore.QSize(60, 35))
        self.dropFitType.setObjectName("dropFitType")
        self.dropFitType.addItem("")
        self.dropFitType.addItem("")
        self.dropFitType.addItem("")
        self.dropFitType.addItem("")
        self.dropFitType.addItem("")
        self.gridLayout_11.addWidget(self.dropFitType, 0, 1, 1, 2)
        self.pbFitCurve = QtWidgets.QPushButton(self.tabFit)
        self.pbFitCurve.setMinimumSize(QtCore.QSize(60, 35))
        self.pbFitCurve.setObjectName("pbFitCurve")
        self.gridLayout_11.addWidget(self.pbFitCurve, 4, 1, 1, 2)
        self.gridLayout_7 = QtWidgets.QGridLayout()
        self.gridLayout_7.setObjectName("gridLayout_7")
        self.label_6 = QtWidgets.QLabel(self.tabFit)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.label_6.sizePolicy().hasHeightForWidth())
        self.label_6.setSizePolicy(sizePolicy)
        self.label_6.setAlignment(QtCore.Qt.AlignCenter)
        self.label_6.setObjectName("label_6")
        self.gridLayout_7.addWidget(self.label_6, 0, 0, 1, 1)
        self.dropMethod = QtWidgets.QComboBox(self.tabFit)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.dropMethod.sizePolicy().hasHeightForWidth())
        self.dropMethod.setSizePolicy(sizePolicy)
        self.dropMethod.setMinimumSize(QtCore.QSize(60, 35))
        self.dropMethod.setObjectName("dropMethod")
        self.gridLayout_7.addWidget(self.dropMethod, 0, 1, 1, 2)
        self.tbEquation = QtWidgets.QTextBrowser(self.tabFit)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tbEquation.sizePolicy().hasHeightForWidth())
        self.tbEquation.setSizePolicy(sizePolicy)
        self.tbEquation.setMinimumSize(QtCore.QSize(0, 40))
        self.tbEquation.setMaximumSize(QtCore.QSize(16777215, 120))
        font = QtGui.QFont()
        font.setFamily("幼圆")
        font.setBold(False)
        font.setWeight(50)
        self.tbEquation.setFont(font)
        self.tbEquation.setReadOnly(True)
        self.tbEquation.setObjectName("tbEquation")
        self.gridLayout_7.addWidget(self.tbEquation, 1, 1, 1, 2)
        self.label_7 = QtWidgets.QLabel(self.tabFit)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Ignored)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.label_7.sizePolicy().hasHeightForWidth())
        self.label_7.setSizePolicy(sizePolicy)
        self.label_7.setAlignment(QtCore.Qt.AlignCenter)
        self.label_7.setObjectName("label_7")
        self.gridLayout_7.addWidget(self.label_7, 1, 0, 2, 1)
        self.caliEqCKB = QtWidgets.QCheckBox(self.tabFit)
        self.caliEqCKB.setEnabled(False)
        self.caliEqCKB.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.caliEqCKB.setObjectName("caliEqCKB")
        self.gridLayout_7.addWidget(self.caliEqCKB, 2, 2, 1, 1)
        self.gridLayout_11.addLayout(self.gridLayout_7, 2, 1, 1, 2)
        self.tabWidget.addTab(self.tabFit, "")
        self.tabCali = QtWidgets.QWidget()
        self.tabCali.setObjectName("tabCali")
        self.gridLayout_12 = QtWidgets.QGridLayout(self.tabCali)
        self.gridLayout_12.setContentsMargins(6, 6, 6, 6)
        self.gridLayout_12.setObjectName("gridLayout_12")
        self.pbDel = QtWidgets.QPushButton(self.tabCali)
        self.pbDel.setMinimumSize(QtCore.QSize(0, 35))
        self.pbDel.setObjectName("pbDel")
        self.gridLayout_12.addWidget(self.pbDel, 1, 0, 1, 1)
        self.pbAdd = QtWidgets.QPushButton(self.tabCali)
        self.pbAdd.setMinimumSize(QtCore.QSize(0, 35))
        self.pbAdd.setObjectName("pbAdd")
        self.gridLayout_12.addWidget(self.pbAdd, 1, 1, 1, 1)
        self.tableCali = QtWidgets.QTableWidget(self.tabCali)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Ignored)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tableCali.sizePolicy().hasHeightForWidth())
        self.tableCali.setSizePolicy(sizePolicy)
        self.tableCali.setAutoFillBackground(False)
        self.tableCali.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.tableCali.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustIgnored)
        self.tableCali.setTextElideMode(QtCore.Qt.ElideMiddle)
        self.tableCali.setObjectName("tableCali")
        self.tableCali.setColumnCount(2)
        self.tableCali.setRowCount(3)
        item = QtWidgets.QTableWidgetItem()
        self.tableCali.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableCali.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableCali.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableCali.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableCali.setHorizontalHeaderItem(1, item)
        self.tableCali.horizontalHeader().setStretchLastSection(True)
        self.tableCali.verticalHeader().setStretchLastSection(True)
        self.gridLayout_12.addWidget(self.tableCali, 0, 0, 1, 2)
        self.pbCaliSubmit = QtWidgets.QPushButton(self.tabCali)
        self.pbCaliSubmit.setMinimumSize(QtCore.QSize(0, 35))
        self.pbCaliSubmit.setObjectName("pbCaliSubmit")
        self.gridLayout_12.addWidget(self.pbCaliSubmit, 2, 0, 1, 2)
        self.pbCaliApply = QtWidgets.QPushButton(self.tabCali)
        self.pbCaliApply.setMinimumSize(QtCore.QSize(0, 35))
        self.pbCaliApply.setObjectName("pbCaliApply")
        self.gridLayout_12.addWidget(self.pbCaliApply, 3, 0, 1, 2)
        self.tabWidget.addTab(self.tabCali, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.formLayout = QtWidgets.QFormLayout(self.tab_2)
        self.formLayout.setObjectName("formLayout")
        self.label_4 = QtWidgets.QLabel(self.tab_2)
        self.label_4.setObjectName("label_4")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole,
                                  self.label_4)
        self.titleLE = QtWidgets.QLineEdit(self.tab_2)
        self.titleLE.setObjectName("titleLE")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole,
                                  self.titleLE)
        self.axisxLE = QtWidgets.QLineEdit(self.tab_2)
        self.axisxLE.setObjectName("axisxLE")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole,
                                  self.axisxLE)
        self.axisyLE = QtWidgets.QLineEdit(self.tab_2)
        self.axisyLE.setObjectName("axisyLE")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole,
                                  self.axisyLE)
        self.textCKB = QtWidgets.QCheckBox(self.tab_2)
        self.textCKB.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.textCKB.setObjectName("textCKB")
        self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole,
                                  self.textCKB)
        self.label_5 = QtWidgets.QLabel(self.tab_2)
        self.label_5.setObjectName("label_5")
        self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole,
                                  self.label_5)
        self.legendLE1 = QtWidgets.QLineEdit(self.tab_2)
        self.legendLE1.setObjectName("legendLE1")
        self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole,
                                  self.legendLE1)
        self.legendLE2 = QtWidgets.QLineEdit(self.tab_2)
        self.legendLE2.setObjectName("legendLE2")
        self.formLayout.setWidget(5, QtWidgets.QFormLayout.FieldRole,
                                  self.legendLE2)
        self.legendCKB = QtWidgets.QCheckBox(self.tab_2)
        self.legendCKB.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.legendCKB.setObjectName("legendCKB")
        self.formLayout.setWidget(6, QtWidgets.QFormLayout.FieldRole,
                                  self.legendCKB)
        self.tabWidget.addTab(self.tab_2, "")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.gridLayout_9 = QtWidgets.QGridLayout(self.tab)
        self.gridLayout_9.setObjectName("gridLayout_9")
        self.fdMaxLE = QtWidgets.QLineEdit(self.tab)
        self.fdMaxLE.setMinimumSize(QtCore.QSize(0, 35))
        self.fdMaxLE.setAlignment(QtCore.Qt.AlignCenter)
        self.fdMaxLE.setObjectName("fdMaxLE")
        self.gridLayout_9.addWidget(self.fdMaxLE, 1, 0, 1, 1)
        self.packFlagLE = QtWidgets.QLineEdit(self.tab)
        self.packFlagLE.setMinimumSize(QtCore.QSize(0, 35))
        self.packFlagLE.setAlignment(QtCore.Qt.AlignCenter)
        self.packFlagLE.setObjectName("packFlagLE")
        self.gridLayout_9.addWidget(self.packFlagLE, 0, 0, 1, 1)
        self.fdMaxPB = QtWidgets.QPushButton(self.tab)
        self.fdMaxPB.setMinimumSize(QtCore.QSize(60, 35))
        self.fdMaxPB.setStyleSheet("background-color: rgb(227, 227, 227);")
        self.fdMaxPB.setObjectName("fdMaxPB")
        self.gridLayout_9.addWidget(self.fdMaxPB, 1, 1, 1, 1)
        self.packFlagPB = QtWidgets.QPushButton(self.tab)
        self.packFlagPB.setMinimumSize(QtCore.QSize(60, 35))
        self.packFlagPB.setStyleSheet("background-color: rgb(227, 227, 227);")
        self.packFlagPB.setObjectName("packFlagPB")
        self.gridLayout_9.addWidget(self.packFlagPB, 0, 1, 1, 1)
        self.tabWidget.addTab(self.tab, "")
        self.gridLayout_8.addWidget(self.tabWidget, 0, 0, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_3)
        self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setBold(True)
        font.setWeight(75)
        self.groupBox_2.setFont(font)
        self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox_2)
        self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.tbStates = QtWidgets.QTextBrowser(self.groupBox_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored,
                                           QtWidgets.QSizePolicy.Ignored)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tbStates.sizePolicy().hasHeightForWidth())
        self.tbStates.setSizePolicy(sizePolicy)
        self.tbStates.setObjectName("tbStates")
        self.gridLayout_3.addWidget(self.tbStates, 0, 0, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_2)
        self.gridLayout.addLayout(self.verticalLayout, 0, 2, 1, 2)
        self.plotTabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.plotTabWidget.setObjectName("plotTabWidget")
        self.tabSpecView = QtWidgets.QWidget()
        self.tabSpecView.setObjectName("tabSpecView")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.tabSpecView)
        self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.specPlot = PlotWidget(self.tabSpecView)
        self.specPlot.setObjectName("specPlot")
        self.gridLayout_4.addWidget(self.specPlot, 0, 0, 1, 1)
        self.plotTabWidget.addTab(self.tabSpecView, "")
        self.tabSnapView = QtWidgets.QWidget()
        self.tabSnapView.setObjectName("tabSnapView")
        self.gridLayout_6 = QtWidgets.QGridLayout(self.tabSnapView)
        self.gridLayout_6.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_6.setObjectName("gridLayout_6")
        self.snapPlot = PlotWidget(self.tabSnapView)
        self.snapPlot.setObjectName("snapPlot")
        self.gridLayout_6.addWidget(self.snapPlot, 0, 0, 1, 1)
        self.plotTabWidget.addTab(self.tabSnapView, "")
        self.tabCaliView = QtWidgets.QWidget()
        self.tabCaliView.setObjectName("tabCaliView")
        self.gridLayout_5 = QtWidgets.QGridLayout(self.tabCaliView)
        self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.caliPlot = PlotWidget(self.tabCaliView)
        self.caliPlot.setObjectName("caliPlot")
        self.gridLayout_5.addWidget(self.caliPlot, 0, 0, 1, 1)
        self.plotTabWidget.addTab(self.tabCaliView, "")
        self.gridLayout.addWidget(self.plotTabWidget, 0, 0, 1, 1)
        self.gridLayout.setColumnStretch(0, 4)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 505, 18))
        self.menubar.setDefaultUp(False)
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        self.menuCom = QtWidgets.QMenu(self.menubar)
        self.menuCom.setObjectName("menuCom")
        self.menuPreference = QtWidgets.QMenu(self.menubar)
        self.menuPreference.setObjectName("menuPreference")
        self.menuAbout = QtWidgets.QMenu(self.menubar)
        self.menuAbout.setObjectName("menuAbout")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionInput = QtWidgets.QAction(MainWindow)
        self.actionInput.setObjectName("actionInput")
        self.actionOutPut = QtWidgets.QAction(MainWindow)
        self.actionOutPut.setObjectName("actionOutPut")
        self.actionHelp = QtWidgets.QAction(MainWindow)
        self.actionHelp.setObjectName("actionHelp")
        self.actionProject = QtWidgets.QAction(MainWindow)
        self.actionProject.setObjectName("actionProject")
        self.actionSerial = QtWidgets.QAction(MainWindow)
        self.actionSerial.setObjectName("actionSerial")
        self.actionGeneral = QtWidgets.QAction(MainWindow)
        self.actionGeneral.setObjectName("actionGeneral")
        self.actionAppearance = QtWidgets.QAction(MainWindow)
        self.actionAppearance.setObjectName("actionAppearance")
        self.actionDataFormat = QtWidgets.QAction(MainWindow)
        self.actionDataFormat.setObjectName("actionDataFormat")
        self.actionLocal = QtWidgets.QAction(MainWindow)
        self.actionLocal.setCheckable(True)
        self.actionLocal.setObjectName("actionLocal")
        self.actionSpec = QtWidgets.QAction(MainWindow)
        self.actionSpec.setCheckable(True)
        self.actionSpec.setObjectName("actionSpec")
        self.actionPeak = QtWidgets.QAction(MainWindow)
        self.actionPeak.setCheckable(True)
        self.actionPeak.setObjectName("actionPeak")
        self.menuFile.addAction(self.actionInput)
        self.menuCom.addAction(self.actionSerial)
        self.menuCom.addSeparator()
        self.menuCom.addAction(self.actionGeneral)
        self.menuPreference.addAction(self.actionAppearance)
        self.menuAbout.addAction(self.actionHelp)
        self.menuAbout.addSeparator()
        self.menuAbout.addAction(self.actionProject)
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuCom.menuAction())
        self.menubar.addAction(self.menuPreference.menuAction())
        self.menubar.addAction(self.menuAbout.menuAction())

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        self.plotTabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(548, 283)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setMinimumSize(QtCore.QSize(0, 0))
        MainWindow.setMaximumSize(QtCore.QSize(99999, 99999))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.centralwidget.sizePolicy().hasHeightForWidth())
        self.centralwidget.setSizePolicy(sizePolicy)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_4.setObjectName("gridLayout_4")
        spacerItem = QtWidgets.QSpacerItem(
            200, 20, QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_4.addItem(spacerItem, 0, 3, 1, 1)
        self.redetect_com_button = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.redetect_com_button.sizePolicy().hasHeightForWidth())
        self.redetect_com_button.setSizePolicy(sizePolicy)
        self.redetect_com_button.setObjectName("redetect_com_button")
        self.gridLayout_4.addWidget(self.redetect_com_button, 0, 0, 1, 1)
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(14)
        self.comboBox.setFont(font)
        self.comboBox.setObjectName("comboBox")
        self.gridLayout_4.addWidget(self.comboBox, 0, 1, 1, 1)
        self.connection_label = QtWidgets.QLabel(self.centralwidget)
        self.connection_label.setObjectName("connection_label")
        self.gridLayout_4.addWidget(self.connection_label, 0, 2, 1, 1)
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.frame)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.laser_on_led = LedIndicator(self.frame)
        self.laser_on_led.setObjectName("laser_on_led")
        self.gridLayout.addWidget(self.laser_on_led, 0, 0, 1, 1)
        self.standby_button = QtWidgets.QPushButton(self.frame)
        self.standby_button.setObjectName("standby_button")
        self.gridLayout.addWidget(self.standby_button, 0, 1, 1, 1)
        self.repetition_on_led = LedIndicator(self.frame)
        self.repetition_on_led.setObjectName("repetition_on_led")
        self.gridLayout.addWidget(self.repetition_on_led, 1, 0, 1, 1)
        self.repetition_on_button = QtWidgets.QPushButton(self.frame)
        self.repetition_on_button.setObjectName("repetition_on_button")
        self.gridLayout.addWidget(self.repetition_on_button, 1, 1, 1, 1)
        self.burst_on_led = LedIndicator(self.frame)
        self.burst_on_led.setObjectName("burst_on_led")
        self.gridLayout.addWidget(self.burst_on_led, 2, 0, 1, 1)
        self.burst_on_button = QtWidgets.QPushButton(self.frame)
        self.burst_on_button.setObjectName("burst_on_button")
        self.gridLayout.addWidget(self.burst_on_button, 2, 1, 1, 1)
        self.external_trigger_on_led = LedIndicator(self.frame)
        self.external_trigger_on_led.setObjectName("external_trigger_on_led")
        self.gridLayout.addWidget(self.external_trigger_on_led, 3, 0, 1, 1)
        self.external_trigger_on_button = QtWidgets.QPushButton(self.frame)
        self.external_trigger_on_button.setObjectName(
            "external_trigger_on_button")
        self.gridLayout.addWidget(self.external_trigger_on_button, 3, 1, 1, 1)
        self.horizontalLayout_3.addLayout(self.gridLayout)
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.laser_off_button = QtWidgets.QPushButton(self.frame)
        self.laser_off_button.setObjectName("laser_off_button")
        self.gridLayout_2.addWidget(self.laser_off_button, 0, 0, 1, 2)
        self.stop_button = QtWidgets.QPushButton(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.Minimum,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.stop_button.sizePolicy().hasHeightForWidth())
        self.stop_button.setSizePolicy(sizePolicy)
        self.stop_button.setObjectName("stop_button")
        self.gridLayout_2.addWidget(self.stop_button, 1, 0, 1, 1)
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_2 = QtWidgets.QLabel(self.frame)
        self.label_2.setObjectName("label_2")
        self.verticalLayout.addWidget(self.label_2)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.repetition_rate_spinBox = QtWidgets.QSpinBox(self.frame)
        font = QtGui.QFont()
        font.setPointSize(12)
        self.repetition_rate_spinBox.setFont(font)
        self.repetition_rate_spinBox.setMaximum(60)
        self.repetition_rate_spinBox.setObjectName("repetition_rate_spinBox")
        self.horizontalLayout.addWidget(self.repetition_rate_spinBox)
        self.label_5 = QtWidgets.QLabel(self.frame)
        self.label_5.setObjectName("label_5")
        self.horizontalLayout.addWidget(self.label_5)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.total_shots_label = QtWidgets.QLabel(self.frame)
        self.total_shots_label.setObjectName("total_shots_label")
        self.verticalLayout.addWidget(self.total_shots_label)
        self.gridLayout_2.addLayout(self.verticalLayout, 1, 1, 1, 1)
        self.horizontalLayout_3.addLayout(self.gridLayout_2)
        self.gridLayout_3.addLayout(self.horizontalLayout_3, 0, 0, 5, 3)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.laser_ready_led = LedIndicator(self.frame)
        self.laser_ready_led.setObjectName("laser_ready_led")
        self.horizontalLayout_2.addWidget(self.laser_ready_led)
        self.label_6 = QtWidgets.QLabel(self.frame)
        self.label_6.setObjectName("label_6")
        self.horizontalLayout_2.addWidget(self.label_6)
        self.gridLayout_3.addLayout(self.horizontalLayout_2, 0, 4, 1, 1)
        self.line = QtWidgets.QFrame(self.frame)
        self.line.setFrameShape(QtWidgets.QFrame.VLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.gridLayout_3.addWidget(self.line, 0, 6, 5, 1)
        self.label = QtWidgets.QLabel(self.frame)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.gridLayout_3.addWidget(self.label, 0, 7, 1, 4)
        spacerItem1 = QtWidgets.QSpacerItem(
            40, 20, QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_3.addItem(spacerItem1, 1, 3, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.frame)
        self.label_3.setObjectName("label_3")
        self.gridLayout_3.addWidget(self.label_3, 1, 4, 1, 1)
        spacerItem2 = QtWidgets.QSpacerItem(20, 50,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.gridLayout_3.addItem(spacerItem2, 1, 8, 2, 1)
        self.temperature_bar = QtWidgets.QProgressBar(self.frame)
        self.temperature_bar.setProperty("value", 24)
        self.temperature_bar.setOrientation(QtCore.Qt.Vertical)
        self.temperature_bar.setObjectName("temperature_bar")
        self.gridLayout_3.addWidget(self.temperature_bar, 1, 9, 4, 1)
        spacerItem3 = QtWidgets.QSpacerItem(20, 50,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.gridLayout_3.addItem(spacerItem3, 1, 10, 2, 1)
        self.repetition_quantity_spinBox = QtWidgets.QSpinBox(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.repetition_quantity_spinBox.sizePolicy().hasHeightForWidth())
        self.repetition_quantity_spinBox.setSizePolicy(sizePolicy)
        self.repetition_quantity_spinBox.setMinimumSize(QtCore.QSize(100, 0))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.repetition_quantity_spinBox.setFont(font)
        self.repetition_quantity_spinBox.setMaximum(65000)
        self.repetition_quantity_spinBox.setObjectName(
            "repetition_quantity_spinBox")
        self.gridLayout_3.addWidget(self.repetition_quantity_spinBox, 2, 4, 1,
                                    2)
        spacerItem4 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.gridLayout_3.addItem(spacerItem4, 3, 5, 1, 1)
        self.repetition_bar = QtWidgets.QProgressBar(self.frame)
        self.repetition_bar.setProperty("value", 24)
        self.repetition_bar.setObjectName("repetition_bar")
        self.gridLayout_3.addWidget(self.repetition_bar, 4, 4, 1, 2)
        self.line_2 = QtWidgets.QFrame(self.frame)
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.gridLayout_3.addWidget(self.line_2, 5, 0, 1, 11)
        self.shutter_status_led = LedIndicator(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.shutter_status_led.sizePolicy().hasHeightForWidth())
        self.shutter_status_led.setSizePolicy(sizePolicy)
        self.shutter_status_led.setObjectName("shutter_status_led")
        self.gridLayout_3.addWidget(self.shutter_status_led, 6, 0, 2, 1)
        self.toggle_shutter_button = QtWidgets.QPushButton(self.frame)
        self.toggle_shutter_button.setObjectName("toggle_shutter_button")
        self.gridLayout_3.addWidget(self.toggle_shutter_button, 7, 1, 1, 1)
        spacerItem5 = QtWidgets.QSpacerItem(
            162, 17, QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_3.addItem(spacerItem5, 7, 2, 1, 2)
        self.label_7 = QtWidgets.QLabel(self.frame)
        self.label_7.setObjectName("label_7")
        self.gridLayout_3.addWidget(self.label_7, 7, 4, 1, 2)
        self.shutter_status_label = QtWidgets.QLabel(self.frame)
        self.shutter_status_label.setObjectName("shutter_status_label")
        self.gridLayout_3.addWidget(self.shutter_status_label, 7, 8, 1, 2)
        self.gridLayout_4.addWidget(self.frame, 1, 0, 1, 4)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 548, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
예제 #3
0
    def __init__(self, parent, proCtrl):
        super().__init__()

        self.proCtrl = proCtrl

        # parent should probably be a QtWidgets.QWidget() e.g. "scrollAreaWidgetContents"
        QtWidgets.QFrame(parent)
        self.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.setFrameShadow(QtWidgets.QFrame.Raised)
        self.verticalFrameLayout = QtWidgets.QVBoxLayout(self)

        # Process row
        self.ProcessLayout = QtWidgets.QHBoxLayout()

        # Name
        self.processNameLabel = QtWidgets.QLabel(self)
        self.processNameLabel.setText(self.proCtrl.name)
        self.processNameLabel.setStyleSheet("font-weight: bold;")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.processNameLabel.sizePolicy().hasHeightForWidth())
        self.processNameLabel.setSizePolicy(sizePolicy)
        self.ProcessLayout.addWidget(self.processNameLabel)

        # Spacer
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.ProcessLayout.addItem(spacerItem)

        # Statistics
        self.statsNameLabel = QtWidgets.QLabel(self)
        self.statsNameLabel.setText("CPU: - , MEM: - ")
        self.ProcessLayout.addWidget(self.statsNameLabel)

        # LED
        self.led = LedIndicator(self)
        self.led.setDisabled(True)
        self.ProcessLayout.addWidget(self.led)

        # Run button
        self.runButton = QtWidgets.QPushButton(self)
        self.runButton.setText("Run")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.runButton.sizePolicy().hasHeightForWidth())
        self.runButton.setSizePolicy(sizePolicy)
        self.runButton.setMinimumSize(QtCore.QSize(30, 30))
        self.runButton.setMaximumSize(QtCore.QSize(40, 40))
        self.ProcessLayout.addWidget(self.runButton)

        # Stop button
        self.stopButton = QtWidgets.QPushButton(self)
        self.stopButton.setText("Stop")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.stopButton.sizePolicy().hasHeightForWidth())
        self.stopButton.setSizePolicy(sizePolicy)
        self.stopButton.setMinimumSize(QtCore.QSize(30, 30))
        self.stopButton.setMaximumSize(QtCore.QSize(40, 40))
        self.ProcessLayout.addWidget(self.stopButton)

        # Checkbox output
        self.showOutputBox = QtWidgets.QCheckBox(self)
        self.showOutputBox.setText("Output")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.showOutputBox.sizePolicy().hasHeightForWidth())
        self.showOutputBox.setSizePolicy(sizePolicy)
        self.showOutputBox.setMinimumSize(QtCore.QSize(30, 30))
        self.showOutputBox.setMaximumSize(QtCore.QSize(80, 35))
        self.ProcessLayout.addWidget(self.showOutputBox)

        self.verticalFrameLayout.addLayout(self.ProcessLayout)

        # Terminal view
        self.terminalTextEdit = QtWidgets.QPlainTextEdit(self)
        self.terminalTextEdit.setPlaceholderText("$ " + self.proCtrl.command)
        self.terminalTextEdit.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.terminalTextEdit.sizePolicy().hasHeightForWidth())
        self.terminalTextEdit.setSizePolicy(sizePolicy)
        self.terminalTextEdit.setMinimumSize(QtCore.QSize(0, 50))
        self.terminalTextEdit.setMaximumSize(QtCore.QSize(16777215, 100))
        self.terminalTextEdit.setStyleSheet(
            "background: rgb(46, 52, 54);\ncolor: rgb(255,255,255);")
        self.terminalTextEdit.setReadOnly(True)
        self.terminalTextEdit.setBackgroundVisible(False)
        self.terminalTextEdit.setObjectName("terminalTextEdit")
        self.verticalFrameLayout.addWidget(self.terminalTextEdit)
        self.terminalTextEdit.setVisible(False)

        # Create Watcher Thread for surveying processControl
        self.watcherThread = QtCore.QThread()
        self.watcherThread.setObjectName("watcherThread")
        self.watchobj = WatchProcessObject(self.proCtrl)
        self.watchobj.moveToThread(self.watcherThread)
        self.watchobj.terminalUpdate.connect(self.updateTerminal)
        self.watchobj.processStopped.connect(self.processFinished)
        self.watchobj.sendStats.connect(self.updateStats)
        self.watcherThread.started.connect(self.watchobj.runWatcher)
        self.watcherThread.start()

        # Connect signals to functions
        self.connectSignals()
예제 #4
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox.sizePolicy().hasHeightForWidth())
        self.groupBox.setSizePolicy(sizePolicy)
        self.groupBox.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox.setObjectName("groupBox")
        self.formLayout = QtWidgets.QFormLayout(self.groupBox)
        self.formLayout.setContentsMargins(2, 2, 2, 2)
        self.formLayout.setObjectName("formLayout")
        self.tabWidget = QtWidgets.QTabWidget(self.groupBox)
        self.tabWidget.setObjectName("tabWidget")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.tab_3)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.line = QtWidgets.QFrame(self.tab_3)
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.gridLayout_3.addWidget(self.line, 6, 0, 1, 4)
        self.recPB = QtWidgets.QPushButton(self.tab_3)
        self.recPB.setObjectName("recPB")
        self.gridLayout_3.addWidget(self.recPB, 14, 2, 1, 1)
        self.stopPB = QtWidgets.QPushButton(self.tab_3)
        self.stopPB.setObjectName("stopPB")
        self.gridLayout_3.addWidget(self.stopPB, 14, 3, 1, 1)
        self.timeLabel = QtWidgets.QLabel(self.tab_3)
        self.timeLabel.setObjectName("timeLabel")
        self.gridLayout_3.addWidget(self.timeLabel, 8, 0, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.tab_3)
        self.label_4.setObjectName("label_4")
        self.gridLayout_3.addWidget(self.label_4, 7, 0, 1, 1)
        self.getLocalPB = QtWidgets.QPushButton(self.tab_3)
        self.getLocalPB.setObjectName("getLocalPB")
        self.gridLayout_3.addWidget(self.getLocalPB, 0, 3, 1, 1)
        self.local_ip_LE = QtWidgets.QLineEdit(self.tab_3)
        self.local_ip_LE.setObjectName("local_ip_LE")
        self.gridLayout_3.addWidget(self.local_ip_LE, 0, 1, 1, 2)
        self.sendPB = QtWidgets.QPushButton(self.tab_3)
        self.sendPB.setObjectName("sendPB")
        self.gridLayout_3.addWidget(self.sendPB, 9, 3, 1, 1)
        self.hexCKB = QtWidgets.QCheckBox(self.tab_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.hexCKB.sizePolicy().hasHeightForWidth())
        self.hexCKB.setSizePolicy(sizePolicy)
        self.hexCKB.setObjectName("hexCKB")
        self.gridLayout_3.addWidget(self.hexCKB, 10, 3, 1, 1)
        self.connectPB = QtWidgets.QPushButton(self.tab_3)
        self.connectPB.setObjectName("connectPB")
        self.gridLayout_3.addWidget(self.connectPB, 5, 2, 1, 1)
        self.des_ip_LE = QtWidgets.QLineEdit(self.tab_3)
        self.des_ip_LE.setObjectName("des_ip_LE")
        self.gridLayout_3.addWidget(self.des_ip_LE, 3, 1, 1, 3)
        self.trigModCB = QtWidgets.QComboBox(self.tab_3)
        self.trigModCB.setObjectName("trigModCB")
        self.trigModCB.addItem("")
        self.trigModCB.addItem("")
        self.trigModCB.addItem("")
        self.gridLayout_3.addWidget(self.trigModCB, 7, 1, 1, 3)
        self.portLE = QtWidgets.QLineEdit(self.tab_3)
        self.portLE.setObjectName("portLE")
        self.gridLayout_3.addWidget(self.portLE, 4, 1, 1, 2)
        self.label_2 = QtWidgets.QLabel(self.tab_3)
        self.label_2.setObjectName("label_2")
        self.gridLayout_3.addWidget(self.label_2, 3, 0, 1, 1)
        self.timeModCB = QtWidgets.QComboBox(self.tab_3)
        self.timeModCB.setObjectName("timeModCB")
        self.timeModCB.addItem("")
        self.timeModCB.addItem("")
        self.gridLayout_3.addWidget(self.timeModCB, 8, 3, 1, 1)
        self.label = QtWidgets.QLabel(self.tab_3)
        self.label.setObjectName("label")
        self.gridLayout_3.addWidget(self.label, 0, 0, 1, 1)
        self.timeLE = QtWidgets.QLineEdit(self.tab_3)
        self.timeLE.setObjectName("timeLE")
        self.gridLayout_3.addWidget(self.timeLE, 8, 1, 1, 2)
        self.discPB = QtWidgets.QPushButton(self.tab_3)
        self.discPB.setObjectName("discPB")
        self.gridLayout_3.addWidget(self.discPB, 5, 3, 1, 1)
        self.stateLed = LedIndicator(self.tab_3)
        self.stateLed.setText("")
        self.stateLed.setObjectName("stateLed")
        self.gridLayout_3.addWidget(self.stateLed, 4, 3, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.tab_3)
        self.label_3.setObjectName("label_3")
        self.gridLayout_3.addWidget(self.label_3, 4, 0, 1, 1)
        self.sendTE = QtWidgets.QPlainTextEdit(self.tab_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored,
                                           QtWidgets.QSizePolicy.Ignored)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.sendTE.sizePolicy().hasHeightForWidth())
        self.sendTE.setSizePolicy(sizePolicy)
        self.sendTE.setObjectName("sendTE")
        self.gridLayout_3.addWidget(self.sendTE, 9, 0, 2, 3)
        self.gridLayout_3.setColumnStretch(1, 2)
        self.gridLayout_3.setColumnStretch(2, 1)
        self.gridLayout_3.setColumnStretch(3, 1)
        self.tabWidget.addTab(self.tab_3, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.tabWidget.addTab(self.tab_4, "")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.SpanningRole,
                                  self.tabWidget)
        self.gridLayout.addWidget(self.groupBox, 0, 1, 1, 1)
        self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2)
        self.gridLayout_2.setContentsMargins(2, 2, 2, 2)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.msgTB = QtWidgets.QTextBrowser(self.groupBox_2)
        self.msgTB.setObjectName("msgTB")
        self.gridLayout_2.addWidget(self.msgTB, 0, 0, 1, 1)
        self.gridLayout.addWidget(self.groupBox_2, 1, 1, 1, 1)
        self.plotView = PlotWidget(self.centralwidget)
        self.plotView.setObjectName("plotView")
        self.gridLayout.addWidget(self.plotView, 0, 0, 2, 1)
        self.gridLayout.setColumnStretch(0, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 18))
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionInput = QtWidgets.QAction(MainWindow)
        self.actionInput.setObjectName("actionInput")
        self.menuFile.addAction(self.actionInput)
        self.menubar.addAction(self.menuFile.menuAction())

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
예제 #5
0
class ProcessControlFrame(QtWidgets.QFrame):
    def __init__(self, parent, proCtrl):
        super().__init__()

        self.proCtrl = proCtrl

        # parent should probably be a QtWidgets.QWidget() e.g. "scrollAreaWidgetContents"
        QtWidgets.QFrame(parent)
        self.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.setFrameShadow(QtWidgets.QFrame.Raised)
        self.verticalFrameLayout = QtWidgets.QVBoxLayout(self)

        # Process row
        self.ProcessLayout = QtWidgets.QHBoxLayout()

        # Name
        self.processNameLabel = QtWidgets.QLabel(self)
        self.processNameLabel.setText(self.proCtrl.name)
        self.processNameLabel.setStyleSheet("font-weight: bold;")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.processNameLabel.sizePolicy().hasHeightForWidth())
        self.processNameLabel.setSizePolicy(sizePolicy)
        self.ProcessLayout.addWidget(self.processNameLabel)

        # Spacer
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.ProcessLayout.addItem(spacerItem)

        # Statistics
        self.statsNameLabel = QtWidgets.QLabel(self)
        self.statsNameLabel.setText("CPU: - , MEM: - ")
        self.ProcessLayout.addWidget(self.statsNameLabel)

        # LED
        self.led = LedIndicator(self)
        self.led.setDisabled(True)
        self.ProcessLayout.addWidget(self.led)

        # Run button
        self.runButton = QtWidgets.QPushButton(self)
        self.runButton.setText("Run")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.runButton.sizePolicy().hasHeightForWidth())
        self.runButton.setSizePolicy(sizePolicy)
        self.runButton.setMinimumSize(QtCore.QSize(30, 30))
        self.runButton.setMaximumSize(QtCore.QSize(40, 40))
        self.ProcessLayout.addWidget(self.runButton)

        # Stop button
        self.stopButton = QtWidgets.QPushButton(self)
        self.stopButton.setText("Stop")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.stopButton.sizePolicy().hasHeightForWidth())
        self.stopButton.setSizePolicy(sizePolicy)
        self.stopButton.setMinimumSize(QtCore.QSize(30, 30))
        self.stopButton.setMaximumSize(QtCore.QSize(40, 40))
        self.ProcessLayout.addWidget(self.stopButton)

        # Checkbox output
        self.showOutputBox = QtWidgets.QCheckBox(self)
        self.showOutputBox.setText("Output")
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.showOutputBox.sizePolicy().hasHeightForWidth())
        self.showOutputBox.setSizePolicy(sizePolicy)
        self.showOutputBox.setMinimumSize(QtCore.QSize(30, 30))
        self.showOutputBox.setMaximumSize(QtCore.QSize(80, 35))
        self.ProcessLayout.addWidget(self.showOutputBox)

        self.verticalFrameLayout.addLayout(self.ProcessLayout)

        # Terminal view
        self.terminalTextEdit = QtWidgets.QPlainTextEdit(self)
        self.terminalTextEdit.setPlaceholderText("$ " + self.proCtrl.command)
        self.terminalTextEdit.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.terminalTextEdit.sizePolicy().hasHeightForWidth())
        self.terminalTextEdit.setSizePolicy(sizePolicy)
        self.terminalTextEdit.setMinimumSize(QtCore.QSize(0, 50))
        self.terminalTextEdit.setMaximumSize(QtCore.QSize(16777215, 100))
        self.terminalTextEdit.setStyleSheet(
            "background: rgb(46, 52, 54);\ncolor: rgb(255,255,255);")
        self.terminalTextEdit.setReadOnly(True)
        self.terminalTextEdit.setBackgroundVisible(False)
        self.terminalTextEdit.setObjectName("terminalTextEdit")
        self.verticalFrameLayout.addWidget(self.terminalTextEdit)
        self.terminalTextEdit.setVisible(False)

        # Create Watcher Thread for surveying processControl
        self.watcherThread = QtCore.QThread()
        self.watcherThread.setObjectName("watcherThread")
        self.watchobj = WatchProcessObject(self.proCtrl)
        self.watchobj.moveToThread(self.watcherThread)
        self.watchobj.terminalUpdate.connect(self.updateTerminal)
        self.watchobj.processStopped.connect(self.processFinished)
        self.watchobj.sendStats.connect(self.updateStats)
        self.watcherThread.started.connect(self.watchobj.runWatcher)
        self.watcherThread.start()

        # Connect signals to functions
        self.connectSignals()

    def connectSignals(self):
        self.runButton.clicked.connect(self.run)
        self.stopButton.clicked.connect(self.stop)
        self.showOutputBox.stateChanged.connect(self.toggleTerminalVisibility)

    def run(self):
        if self.proCtrl.is_running():
            return
        success = self.proCtrl.start()
        if success:
            self.updateTerminal("$ " + self.proCtrl.command + "\n")
            self.led.setChecked(True)
        else:
            msg = "\n>>> Process could not be started. Check command and/or paths."
            self.terminalTextEdit.setPlaceholderText("$ " +
                                                     self.proCtrl.command +
                                                     msg)

    def stop(self):
        if not self.proCtrl.is_running():
            return
        self.processFinished()
        self.updateTerminal(">>> Stopped by user\n\n")

    def updateTerminal(self, newtext):
        if newtext == "" or newtext == "\n":
            return
        existing = self.terminalTextEdit.toPlainText()
        self.terminalTextEdit.setPlainText(existing + newtext)
        self.terminalTextEdit.verticalScrollBar().setValue(
            self.terminalTextEdit.verticalScrollBar().maximum())

    def updateStats(self, stats):
        self.statsNameLabel.setText("CPU: " + str(round(stats["cpu"], 2)) +
                                    "% , MEM: " + str(round(stats["mem"], 2)) +
                                    " MiB ")

    def processFinished(self):
        self.led.setChecked(False)
        self.statsNameLabel.setText("CPU: - , MEM: - ")
        self.proCtrl.kill()

    def toggleTerminalVisibility(self):
        if self.terminalTextEdit.isVisible():
            self.terminalTextEdit.setVisible(False)
        else:
            self.terminalTextEdit.setVisible(True)