【python上位机开发】8、快捷发送功能的实现

一、思路

   这个功能的实现要比较复杂,涉及到配置文件的使用。使用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'))

三、总结

  以上就是快捷发送相关的内容了,要是有什么描述有误的地方欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我在厦门做测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值