一、思路
这个功能的实现要比较复杂,涉及到配置文件的使用。使用QT中的listWidget来进行数据的显示。添加一个“发送”按钮和“删除”按钮,可以通过选取我们要操作的指令进行发送或者是删除。通过添加的一个形式将数据添加到我们的listwidget当中并且显示。具体的思路请看下文的具体实现思路。
二、实现
1、创建一个ini格式的文件,放在和程序同一个文件夹当中。关于什么是ini文件,可以查看👉[学习分享]利用python解析ini格式的配置文件_python 解析ini-CSDN博客
2、 添加自己需要的快捷发送字段
@Slot()
def add_fast_send(self):
text = self.con.ui.ui.lineEdit_2.text() #获取lineEdit当中的数据,也就是我们要添加的数据
if text : # 多一个判断,筛选空数据
self.con.ui.ui.listWidget.addItem(str(text)) # 将获取到的数据添加到listwidget控件里面
这样我们就完成了一个添加的操作,但是现在会出现一个问题,软件关闭重启后,我添加的快捷发送就没了,成了一次性使用。所以为了避免这个问题,需要将新添加的字段也一起写入到配置文件,每次启动软件的时候就读取配置文件当中的数据,给listwidget赋值,达到一个保存的效果,具体实现如下:
@Slot()
def add_fast_send(self):
text = self.con.ui.ui.lineEdit_2.text()
if text :
self.con.ui.ui.listWidget.addItem(str(text))
self.config.read(self.filepath,'utf-8') # 读取配置文件,操作前要先read
self.config.set('list','data' + str(len(self.config.options('list')) +1),str(text)) # 往ini文件当中添加数据
with open('list.ini','w+',encoding='utf-8') as file:
self.config.write(file) # 最后write写入
file.close() # 关闭流
QMessageBox.information(self, "提示", '字段'+text + "添加成功", QMessageBox.Ok,QMessageBox.Ok)
self.con.ui.ui.lineEdit_2.clear()
else:
QMessageBox.information(self, "提示", "请输入要添加的字段", QMessageBox.Ok, QMessageBox.Ok)
通过以上的逻辑就可以实现,添加快捷发送的字段并且可以显示、保存。
3、快捷方式发送
实现逻辑为:获取listwidget选中的文本,转化为utf-8的格式,写入串口
def fast_sent_data(self):
text = self.con.ui.ui.listWidget.currentItem().text()
try:
if text and self.con.serial_class.serial.is_open:
print(text.encode('utf-8'))
self.con.serial_class.serial.write(text.encode('utf-8')) # 发送数据将数据转换成 utf-8 格式发送
except Exception as error:
print(error)
4、删除快捷发送字段
实现逻辑:获取选中的数据,再将其提取出来,使用del函数删除。对于ini文件的操作,读取ini配置文件,建立一个空列表用于承接listwidget上剩余的数据。使用迭代器将剩余的数据加到列表里。(最关键的来了!!!!!!)删除ini文件的模块名,将该模块下的所有数据删除。再重新创建一个名称一摸一样的。重新设置ini文件的key和value,将列表当中的数据导入,最后记得写入和关闭流。
@Slot()
def delet_listwidget_data(self):
# 做页面的listwidget的删除
s = self.con.ui.ui.listWidget.currentRow() # 获取listwidget选中数据的所在行
i = self.con.ui.ui.listWidget.takeItem(s) # 获取选中行
del i # 删除选中的数据
self.config.read(self.filepath, 'utf-8') # 读取配置文件
widgetres = [] #建立一个空列表用于承接剩余的listwidget中的数据
count = self.con.ui.ui.listWidget.count() # 获取剩余的数据量
for i in range(count): # 获取剩余的listwidget页面数值
widgetres.append(self.con.ui.ui.listWidget.item(i).text())
self.config.remove_section('list') # ini文件删除list主题,一键删除所有现存数据
self.config.add_section('list') # ini文件创建list主题
i = 0
while i < len(widgetres):
self.config.set('list', 'data' + str(len(self.config.options('list')) + 1), str(widgetres[i]))
i += 1
self.config.write(open('list.ini', 'w'))
三、总结
以上就是快捷发送相关的内容了,要是有什么描述有误的地方欢迎指正。