pyqt5_站点管理_stcd_windows
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,from PyQt5.QtWidgets import (QWidget,QTableWidget,QHBoxLayout,QVBoxLayout,QGridLayout,QGroupBox,QLin
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
网络安全网法个人怎么做
utf8mb4数据库创建
信息网络安全、档案管理岗
易语言取数据库
计算机网络技术是数媒吗
软件开发技术作业
计算机网络技术模拟试卷1
软件开发中设计阶段任务有哪些
网络安全幼儿儿歌
上海创橙互联网科技
华为服务器主板关闭黑洞
如何更新app数据库
开源网络安全专业
认可的域控制器软件开发
一个数据库怎么设置多个ip
成都防伪码软件开发
access数据库 教程
互联网金融博盈科技
魔兽世界服务器能容多少人
根服务器为什么只有13个
服务器上安装xorg
网络安全与网络道德作文
校园网络安全的建设背景
数据库噪音是什么意思
py读取excel写入数据库
计算机网络技术考点解读
金证股份软件开发待遇如何
潍坊企业管理软件开发服务
银行开放网络安全吗
贵州品质软件开发服务检测中心