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