from PyQt5.QtCore import (QCoreApplication, Qt) from PyQt5.QtWidgets import (QGridLayout, QLabel, QLineEdit, QPushButton, QSizePolicy, QSpacerItem, QWidget, QComboBox, QMessageBox, QSplitter, QListView) from utils.DBModels.ProtocolModel import TCPSetting class CustomBox(QComboBox): def __init__(self): super(CustomBox, self).__init__() self.setCursor(Qt.PointingHandCursor) self.setView(QListView()) def showPopup(self): super(CustomBox, self).showPopup() pop = self.children()[1] pop.move(pop.x(), pop.y() + 51) class TCPSettingWidget(QWidget): BORDER_WIDTH = 5 def __init__(self, tcpType): super(TCPSettingWidget, self).__init__() self.tcpType = tcpType self.gridLayout_2 = QGridLayout(self) self.gridLayout_2.setObjectName("gridLayout_2") self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.gridLayout_2.addItem(self.verticalSpacer, 0, 1, 3, 12) self.gridLayout = QGridLayout() self.gridLayout.setObjectName("gridLayout") self.label = QLabel(self) self.label.setObjectName("setlabel") self.label.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter) self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout.addItem(self.horizontalSpacer_3, 2, 0, 1, 4) self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout.addItem(self.horizontalSpacer_4, 5, 0, 1, 4) self.ipEdit = QLineEdit(self) self.ipEdit.setObjectName("setEdit") self.gridLayout.addWidget(self.ipEdit, 1, 0, 1, 3) self.freEdit = QLineEdit(self) self.freEdit.setObjectName("setEdit") self.gridLayout.addWidget(self.freEdit, 7, 0, 1, 3) self.portEdit = QLineEdit(self) self.portEdit.setObjectName("setEdit") self.gridLayout.addWidget(self.portEdit, 4, 0, 1, 3) self.label_2 = QLabel(self) self.label_2.setObjectName("setlabel") self.label_2.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter) self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1) self.label_3 = QLabel(self) self.label_3.setObjectName("setlabel") self.label_3.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter) self.gridLayout.addWidget(self.label_3, 6, 0, 1, 1) self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout.addItem(self.horizontalSpacer_5, 8, 0, 1, 4) self.offsetBox = CustomBox() self.offsetBox.addItem("1") self.offsetBox.addItem("0") self.offsetBox.setObjectName("setBox") #self.gridLayout.addWidget(QLabel('起始值'), 6, 0, 1, 1) self.label_4 = QLabel('起始值') self.label_4.setObjectName('setlabel') self.gridLayout.addWidget(self.label_4,9, 0, 1, 2) self.gridLayout.addWidget(self.offsetBox, 10, 0, 1, 3) self.gridLayout.addItem(QSpacerItem(40, 20), 11, 0, 1, 4) self.gridLayout_2.addLayout(self.gridLayout, 3, 5, 2, 2) self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout_2.addItem(self.horizontalSpacer, 7, 0, 3, 5) self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.gridLayout_2.addItem(self.verticalSpacer_2, 7, 0, 3, 5) self.saveButton = QPushButton(self) self.saveButton.setObjectName("setButton") #self.gridLayout.addWidget(QSplitter(), 11, 0, 1, 5) self.gridLayout.addWidget(self.saveButton, 12, 0, 1, 3) self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout_2.addItem(self.horizontalSpacer_2, 9, 2, 3, 5) self.label.setText('IP地址') self.label_2.setText(QCoreApplication.translate("self", u"\u7aef\u53e3\u53f7", None)) self.label_3.setText(QCoreApplication.translate("self", u"\u901a\u8baf\u9891\u7387", None)) self.saveButton.setText(QCoreApplication.translate("self", u"\u4fdd\u5b58", None)) self.saveButton.clicked.connect(self.saveSetting) def setupUI(self): # host = CharField() # port = IntegerField() # frequency = CharField() if self.tcpType == 'master': query = TCPSetting.get_by_id(1) else: query = TCPSetting.get_by_id(2) port = str(query.port) host = str(query.host) frequency = str(query.frequency) offset = str(query.offset) self.ipEdit.setText(host) self.portEdit.setText(port) self.freEdit.setText(frequency) self.offsetBox.setCurrentText(offset) def saveSetting(self): host = self.ipEdit.text() port = self.portEdit.text() frequency = self.freEdit.text() offset = self.offsetBox.currentText() if self.tcpType == 'master': TCPSetting.update(host = host, port = port, frequency = frequency, offset = offset).where(TCPSetting.tcpType == 'master').execute() else: TCPSetting.update(host = host, port = port, frequency = frequency, offset = offset).where(TCPSetting.tcpType == 'slave').execute() QMessageBox.information(self, 'Sucess', '保存成功')