|
|
|
@ -8,7 +8,9 @@ from PyQt5.Qt import *
|
|
|
|
|
|
|
|
|
|
from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, \
|
|
|
|
|
QApplication, QLineEdit, QWidget, QTableWidget, QSplitter,QVBoxLayout,QPushButton, QProgressBar, QTableWidgetItem, QMessageBox
|
|
|
|
|
from PyQt5.QtWidgets import QDialog
|
|
|
|
|
from PyQt5.QtWidgets import QDialog, QListWidgetItem
|
|
|
|
|
|
|
|
|
|
from protocol.ModBus.DPV1Master import DPV1Master
|
|
|
|
|
|
|
|
|
|
class SearchAddressWidget(QWidget):
|
|
|
|
|
def __init__(self, deviceAddressEdit):
|
|
|
|
@ -20,22 +22,7 @@ class SearchAddressWidget(QWidget):
|
|
|
|
|
def initUI(self):
|
|
|
|
|
self.resize(800, 500)
|
|
|
|
|
self.setObjectName('deviceDialog')
|
|
|
|
|
self.addressTabWidget = QTableWidget()
|
|
|
|
|
self.addressTabWidget.setRowCount(10)
|
|
|
|
|
self.addressTabWidget.setColumnCount(1)
|
|
|
|
|
|
|
|
|
|
self.addressTabWidget.setShowGrid(False) #隐藏网格线
|
|
|
|
|
self.addressTabWidget.horizontalHeader().setVisible(False) # 隐藏水平表头
|
|
|
|
|
self.addressTabWidget.verticalHeader().setVisible(False) # 隐藏垂直表头
|
|
|
|
|
self.header = self.addressTabWidget.horizontalHeader()
|
|
|
|
|
self.header.setStretchLastSection(True) #设置最后一列顶格
|
|
|
|
|
self.addressTabWidget.setFocusPolicy(Qt.NoFocus) #取消选中焦点,去掉虚线框
|
|
|
|
|
self.addressTabWidget.setEditTriggers(QTableWidget.NoEditTriggers)
|
|
|
|
|
self.addressTabWidget.cellClicked.connect(self.onCellClicked)
|
|
|
|
|
self.addressTabWidget.cellDoubleClicked.connect(lambda row, column: self.onCellClicked(row, column, True))
|
|
|
|
|
|
|
|
|
|
self.item = QTableWidgetItem('16')
|
|
|
|
|
self.addressTabWidget.setItem(0, 0, self.item)
|
|
|
|
|
self.addressListWidget = QListWidget()
|
|
|
|
|
|
|
|
|
|
self.mainlayout = QVBoxLayout()
|
|
|
|
|
self.progressBar = QProgressBar(self)
|
|
|
|
@ -51,24 +38,28 @@ class SearchAddressWidget(QWidget):
|
|
|
|
|
self.bottomLayout.addWidget(self.cancelBtn)
|
|
|
|
|
|
|
|
|
|
self.mainlayout.addWidget(self.progressBar)
|
|
|
|
|
self.mainlayout.addWidget(self.addressTabWidget)
|
|
|
|
|
self.mainlayout.addWidget(self.addressListWidget)
|
|
|
|
|
self.mainlayout.addLayout(self.bottomLayout)
|
|
|
|
|
|
|
|
|
|
self.setLayout(self.mainlayout)
|
|
|
|
|
self.setWindowTitle('从站地址查找')
|
|
|
|
|
|
|
|
|
|
self.timer = QTimer()
|
|
|
|
|
self.timer.timeout.connect(self.updateProgress)
|
|
|
|
|
self.timer.start(500)
|
|
|
|
|
|
|
|
|
|
test = DPV1Master('192.168.3.10', 502)
|
|
|
|
|
test.searchMaster(self.updateProgress)
|
|
|
|
|
# self.timer = QTimer()
|
|
|
|
|
# self.timer.timeout.connect(self.updateProgress)
|
|
|
|
|
# self.timer.start(500)
|
|
|
|
|
|
|
|
|
|
def updateProgress(self):
|
|
|
|
|
def updateProgress(self, address, isSlave):
|
|
|
|
|
# 模拟一个任务,逐步更新进度条
|
|
|
|
|
self.progressBar.setValue(int(125 * (100/125)))
|
|
|
|
|
self.progressBar.setValue(int(address * (100/125)))
|
|
|
|
|
if isSlave:
|
|
|
|
|
self.addressListWidget.addItem(QListWidgetItem(str(address)))
|
|
|
|
|
# QApplication.processEvents() # 确保UI及时更新
|
|
|
|
|
# QTimer.singleShot(100, lambda: None) # 暂停一小段时间,模拟任务执行时间
|
|
|
|
|
|
|
|
|
|
def onCellClicked(self, row, column, double = False):
|
|
|
|
|
item = self.addressTabWidget.item(row, column)
|
|
|
|
|
item = self.addressListWidget.item(row, column)
|
|
|
|
|
if item:
|
|
|
|
|
self.address = item.text()
|
|
|
|
|
if double:
|
|
|
|
|