pyqt5_站点管理_stcd_windows
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,from PyQt5.QtWidgets import (QWidget,QTableWidget,QHBoxLayout,QVBoxLayout,QGridLayout,QGroupBox,QLin
千家信息网最后更新 2025年12月01日pyqt5_站点管理_stcd_windows
from PyQt5.QtWidgets import (QWidget,QTableWidget,QHBoxLayout,QVBoxLayout,QGridLayout,QGroupBox,QLineEdit,QLabel,QPushButton, QHeaderView,QTableWidgetItem,QMessageBox)import os,re#定义站点信息窗口class stcd_window(QWidget): def __init__(self): super().__init__() self.stcd_tablewidget = QTableWidget(0, 3) self.stcd_stcd = QLineEdit() self.stcd_rtu = QLineEdit() self.stcd_name = QLineEdit() self.list_stcd = [] self.stcd_pik_path = './/DATA//STCDinfo.pik' self.stcd_txt_path = './/DATA//站点信息.txt' self.table_clicked_old = -1 #用来记录行号 self.initUI() def initUI(self): #初始化窗口组件 self.stcd_tablewidget.setHorizontalHeaderLabels(['站点编码', 'RTU编码', '站点名称']) self.stcd_tablewidget.setEditTriggers(QTableWidget.NoEditTriggers) table_group = QGroupBox('站点') table_vbox = QVBoxLayout() table_vbox.addWidget(self.stcd_tablewidget) table_group.setLayout(table_vbox) stcd_group = QGroupBox('站点信息配置') stcd_grid = QGridLayout() stcd_label = QLabel('站点编码:') rtu_label = QLabel('RTU编码:') name_label = QLabel('站点名称:') delete_button = QPushButton('删除') input_button = QPushButton('保存') delete_button.clicked.connect(self.delete_stcd_info) input_button.clicked.connect(self.save_stcd_info) self.stcd_tablewidget.cellClicked[int, int].connect(self.cell_clicked) stcd_grid.addWidget(stcd_label, 0, 0) stcd_grid.addWidget(self.stcd_stcd, 0, 1) stcd_grid.addWidget(rtu_label, 1, 0) stcd_grid.addWidget(self.stcd_rtu, 1, 1) stcd_grid.addWidget(name_label, 2, 0) stcd_grid.addWidget(self.stcd_name, 2, 1) button_grid = QGridLayout() button_grid.addWidget(delete_button, 0, 0) button_grid.addWidget(input_button, 0, 1) stcd_vbox = QVBoxLayout() stcd_vbox.addLayout(stcd_grid) stcd_vbox.addLayout(button_grid) stcd_group.setLayout(stcd_vbox) hbox = QHBoxLayout() hbox.addWidget(table_group) hbox.addWidget(stcd_group) self.setLayout(hbox) self.get_list_stcd() self.initTable() #初始化站点信息表单 def get_list_stcd(self): try: if not os.path.exists(self.stcd_txt_path): with open(self.stcd_txt_path, 'w') as stcd_txt_file: stcd_txt_file.write('站点编码;RTU站点;站点名称\n') return with open(self.stcd_txt_path, 'r') as stcd_txt_file: stcd_txt_file.readline() self.list_stcd.clear() txt_line = stcd_txt_file.readline() while txt_line: txt_line = txt_line.strip('\n') txt_line = txt_line.replace(';', ';') x = re.findall(r';', txt_line) if len(x) >1: txt_line = txt_line.replace('-', '-') line = txt_line.strip().split(';', 2) if not line[0].strip() == '': self.list_stcd.append([line[0].strip(), line[1].strip(), line[2].strip()]) txt_line = stcd_txt_file.readline() try: os.remove(self.stcd_txt_path) except Exception as error1: return with open(self.stcd_txt_path, 'a') as stcd_txt_file: stcd_txt_file.write('站点编码;RTU站点;站点名称\n') for line in self.list_stcd: stcd_txt_file.write(line[0] + ';' + line[1] + ';' + line[2] + '\n') except Exception as error: return #初始化列表 def initTable(self): x = 0 for line in self.list_stcd: self.stcd_tablewidget.insertRow(x) self.stcd_tablewidget.setItem(x, 0, QTableWidgetItem(line[0])) self.stcd_tablewidget.setItem(x, 1, QTableWidgetItem(line[1])) self.stcd_tablewidget.setItem(x, 2, QTableWidgetItem(line[2])) x = x + 1 #表格被选择 def cell_clicked(self, x, y): if self.table_clicked_old == x: return self.table_clicked_old = x self.stcd_stcd.setText(self.stcd_tablewidget.item(x, 0).text()) self.stcd_rtu.setText(self.stcd_tablewidget.item(x, 1).text()) self.stcd_name.setText(self.stcd_tablewidget.item(x, 2).text()) #保存按钮 def save_stcd_info(self): if self.stcd_stcd.text().strip() == '' or self.stcd_rtu.text().strip() == '' or self.stcd_name.text().strip() == '': QMessageBox.warning(self,'注意','站点编码,RTU编码,站点名称\n不能为空.') return x = 0 while x < len(self.list_stcd): if self.stcd_stcd.text().strip() == self.list_stcd[x][0]: flag = 0 if self.stcd_rtu.text().strip() != self.list_stcd[x][1]: del self.list_stcd[x][1] self.list_stcd[x].insert(1,self.stcd_rtu.text().strip()) self.stcd_tablewidget.setItem(x,1,QTableWidgetItem(self.stcd_rtu.text().strip())) flag = 1 if self.stcd_name.text().strip() != self.list_stcd[x][2]: del self.list_stcd[x][2] self.list_stcd[x].insert(2, self.stcd_name.text().strip()) self.stcd_tablewidget.setItem(x, 2, QTableWidgetItem(self.stcd_name.text().strip())) flag = 2 if flag > 0: os.remove(self.stcd_txt_path) with open(self.stcd_txt_path, 'a') as r_file: r_file.write('站点编码;RTU站点;站点名称\n') for line in self.list_stcd: r_file.write(line[0] + ';' + line[1] + ';' + line[2] + '\n') r_file.flush() return x = x + 1 self.stcd_tablewidget.insertRow(len(self.list_stcd)) self.stcd_tablewidget.setItem(len(self.list_stcd), 0, QTableWidgetItem(self.stcd_stcd.text().strip())) self.stcd_tablewidget.setItem(len(self.list_stcd), 1, QTableWidgetItem(self.stcd_rtu.text().strip())) self.stcd_tablewidget.setItem(len(self.list_stcd), 2, QTableWidgetItem(self.stcd_name.text().strip())) self.list_stcd.append([self.stcd_stcd.text().strip(), self.stcd_rtu.text().strip(), self.stcd_name.text().strip()]) with open(self.stcd_txt_path,'a') as file: file.write(self.stcd_stcd.text().strip() + ';' + self.stcd_rtu.text().strip() + ';' + self.stcd_name.text().strip() + '\n') self.table_clicked_old = -1 #删除按钮 def delete_stcd_info(self): if self.table_clicked_old == -1: QMessageBox.warning(self,'提示','请先选择要删除的站点,再删除.') return self.stcd_tablewidget.removeRow(self.table_clicked_old) del self.list_stcd[self.table_clicked_old] os.remove(self.stcd_txt_path) with open(self.stcd_txt_path, 'a') as de_file: de_file.write('站点编码;RTU站点;站点名称\n') for line in self.list_stcd: de_file.write(line[0] + ';' + line[1] + ';' + line[2] + '\n') de_file.flush() self.stcd_stcd.setText('') self.stcd_rtu.setText('') self.stcd_name.setText('') self.table_clicked_old = -1
站点
编码
名称
信息
按钮
选择
组件
表单
表格
行号
提示
配置
站点管理
管理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
楚留香手游用什么软件开发的
大数据网络技术的趋势
竞技世界网络技术有
java数据库dao
东营网络安全系数
宜城市学校网络安全
北京智能照明软件开发怎么收费
山东省存储服务器批发
民航网络安全三个管理办法
对服务器的安全为理由
抖音服务器升级公告在哪
城阳区微信公众号软件开发公司
如何处理数据库连接问题
忻州一中网络安全
连接数据库错误 管家婆
中国网络技术崛起
软件开发自动化测试工程师
银行业网络安全情况说明
深圳凡隆网络技术有限公
91为什么一直连接服务器
数据库开发工程师英文简历
太原软件开发厂家报价
惠普服务器怎么查ip地址
服务器 数据库同步
太原软件开发工程
北京网络安全人员缺口
中文方正数据库
怎么自己电脑作为服务器访问
软件开发工作室经营范围
济南迪卡软件开发有限公司