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.
PROFIBUS/UI/SearchAddressWidget.py

81 lines
3.1 KiB
Python

from UI.DeviceDialogWidget import DeviceDialog
import sys
import re
import random
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt, QTimer
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
class SearchAddressWidget(QWidget):
def __init__(self, deviceAddressEdit):
super().__init__()
self.selected_value = None
self.deviceAddressEdit = deviceAddressEdit
self.initUI()
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.mainlayout = QVBoxLayout()
self.progressBar = QProgressBar(self)
self.bottomLayout = QHBoxLayout()
self.confirmBtn = QPushButton('确定')
self.confirmBtn.clicked.connect(self.onConfirm)
self.cancelBtn = QPushButton('取消')
self.bottomLayout.addWidget(self.confirmBtn)
self.bottomLayout.addWidget(QSplitter())
self.bottomLayout.addWidget(self.cancelBtn)
self.mainlayout.addWidget(self.progressBar)
self.mainlayout.addWidget(self.addressTabWidget)
self.mainlayout.addLayout(self.bottomLayout)
self.setLayout(self.mainlayout)
self.setWindowTitle('从站地址查找')
self.timer = QTimer()
self.timer.timeout.connect(self.updateProgress)
self.timer.start(500)
def updateProgress(self):
# 模拟一个任务,逐步更新进度条
self.progressBar.setValue(int(125 * (100/125)))
# QApplication.processEvents() # 确保UI及时更新
# QTimer.singleShot(100, lambda: None) # 暂停一小段时间,模拟任务执行时间
def onCellClicked(self, row, column, double = False):
item = self.addressTabWidget.item(row, column)
if item:
self.address = item.text()
if double:
self.onConfirm()
def onConfirm(self):
self.deviceAddressEdit.setText(self.address)
self.close()