You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.6 KiB
Python
126 lines
4.6 KiB
Python
from PyQt5 import QtCore
|
|
from PyQt5.QtCore import Qt, pyqtSignal
|
|
from PyQt5.QtWidgets import QDialog, QGroupBox, QLabel, QComboBox, QLineEdit, QVBoxLayout, QSplitter, \
|
|
QGridLayout, QPushButton, QHBoxLayout
|
|
|
|
from communication.view.thread.addThread import addVarThread
|
|
|
|
|
|
class newVarWindow(QDialog):
|
|
my_sin = pyqtSignal(list)
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.setWindowTitle('追加变量')
|
|
self.setWindowModality(Qt.ApplicationModal)
|
|
self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)
|
|
|
|
self.init()
|
|
|
|
def init(self):
|
|
self.groupBox = QGroupBox('批量增加变量')
|
|
self.var_type = QLabel('功能码')
|
|
self.var_number = QLabel('连续个数')
|
|
self.register = QLabel('寄存器间隔')
|
|
self.var_name = QLabel('变量名')
|
|
self.describe = QLabel('描述')
|
|
self.eu = QLabel('单位')
|
|
self.sig_type = QLabel('变量类型')
|
|
self.data_type = QLabel('数值类型')
|
|
self.slot = QLabel('通信接口')
|
|
self.channel = QLabel('通道')
|
|
|
|
lis = ['1', '2', '3', '4']
|
|
self.type_combobox = QComboBox(self, minimumWidth=100)
|
|
for i in lis:
|
|
self.type_combobox.addItem(i)
|
|
|
|
self.var_number_line = QLineEdit(self)
|
|
self.var_number_line.setText('1')
|
|
self.register_line = QLineEdit(self)
|
|
self.register_line.setText('1')
|
|
self.var_name_line = QLineEdit(self)
|
|
self.var_name_line.setText('var')
|
|
self.describe_line = QLineEdit(self)
|
|
self.describe_line.setText('描述')
|
|
self.eu_line = QLineEdit(self)
|
|
self.eu_line.setText('mA')
|
|
self.sig_type_line = QLineEdit(self)
|
|
self.sig_type_line.setText('sAO')
|
|
self.slot_line = QLineEdit(self)
|
|
self.slot_line.setText('PXI1SLOT1')
|
|
self.channel_line = QLineEdit(self)
|
|
self.channel_line.setText('PXI-6704/CH1')
|
|
self.data_type_line = QLineEdit(self)
|
|
self.data_type_line.setText('D64')
|
|
layout = QGridLayout()
|
|
|
|
layout.addWidget(self.var_type, 0, 0)
|
|
layout.addWidget(self.type_combobox, 0, 1)
|
|
layout.addWidget(self.register, 0, 2)
|
|
layout.addWidget(self.register_line, 0, 3)
|
|
|
|
layout.addWidget(self.var_number, 1, 0)
|
|
layout.addWidget(self.var_number_line, 1, 1)
|
|
layout.addWidget(self.var_name, 1, 2)
|
|
layout.addWidget(self.var_name_line, 1, 3)
|
|
# layout.addWidget(self.data_type, 1, 2)
|
|
# layout.addWidget(self.data_type_line, 1, 3)
|
|
# layout.addWidget(self.register, 1, 2)
|
|
# layout.addWidget(self.register_line, 1, 3)
|
|
|
|
layout.addWidget(self.data_type, 2, 0)
|
|
layout.addWidget(self.data_type_line, 2, 1)
|
|
layout.addWidget(self.sig_type, 2, 2)
|
|
layout.addWidget(self.sig_type_line, 2, 3)
|
|
|
|
layout.addWidget(self.describe, 3, 0)
|
|
layout.addWidget(self.describe_line, 3, 1)
|
|
layout.addWidget(self.slot, 3, 2)
|
|
layout.addWidget(self.slot_line, 3, 3)
|
|
|
|
layout.addWidget(self.eu, 4, 0)
|
|
layout.addWidget(self.eu_line, 4, 1)
|
|
layout.addWidget(self.channel, 4, 2)
|
|
layout.addWidget(self.channel_line, 4, 3)
|
|
|
|
self.groupBox.setLayout(layout)
|
|
|
|
self.btn_connect = QPushButton('确定')
|
|
self.btn_connect.clicked.connect(self.commit)
|
|
self.btn_cancel = QPushButton('取消')
|
|
self.btn_cancel.clicked.connect(self.close)
|
|
|
|
mainLayout = QVBoxLayout()
|
|
hmainlayout = QHBoxLayout()
|
|
hmainlayout.addWidget(QSplitter())
|
|
hmainlayout.addWidget(self.btn_connect)
|
|
hmainlayout.addWidget(self.btn_cancel)
|
|
mainLayout.addWidget(self.groupBox)
|
|
mainLayout.addLayout(hmainlayout)
|
|
|
|
self.setLayout(mainLayout)
|
|
|
|
def commit(self):
|
|
name_text = self.var_name_line.text()
|
|
number = self.var_number_line.text()
|
|
describe = self.describe_line.text()
|
|
interval = self.register_line.text()
|
|
unit = self.eu_line.text()
|
|
sig_type = self.sig_type_line.text()
|
|
slot = self.slot_line.text()
|
|
channel = self.channel_line.text()
|
|
combobox_text = self.type_combobox.currentText()
|
|
data_type = self.data_type_line.text()
|
|
self.threading = addVarThread(
|
|
name=name_text, number=number, describe=describe,
|
|
interval=interval, unit=unit, sig_type=sig_type,
|
|
slot=slot, channel=channel, reg=combobox_text,
|
|
chr=data_type
|
|
)
|
|
self.threading.start()
|
|
self.threading.sinOut.connect(self.receive_sin)
|
|
|
|
def receive_sin(self, lis):
|
|
self.my_sin.emit(lis)
|