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)
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 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)
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)