PyQt5窗口滚动显示最新数据

PyQt5窗口滚动显示最新数据

如图所示

ezgif-3-f382c010b9.gif

显示数据

显示窗口使用的为QTextBrowser()
刷新显示数据很简单,在单独一个新线程中进行填充数据即可

self.TextView.append(buf_gbk)

buf_gbk是需要显示的数据
使用append方法追加显示,注意此处不要使用setText()方法,setText()只能显示一次,不能追加数据,多次调用会异常崩掉
使用append()方法追加显示后效果如下
ezgif-3-0bf3790ca2.gif
但是!咱们要做的是个串口数据监视窗口,数据肯定需要实时显示最新的
那么仅仅追加就不够了

实时显示最新数据

其实显示最新也很简单的
最开是找了想了很多方法比如直接设置窗口显示最新数据什么的都没管用(可能还是我太菜了吧)
最后用最简单的方式解决了
在每次追加数据之后把光标移动指最后一行即可
就一行

self.TextView.moveCursor(self.TextView.textCursor().End)  # 移动光标到底部

全部代码

    # 读串口线程
    def __textUpdateThread(self):
        while self.__connectBuf:
            try:
                # 阻塞式读串口
                buf = self.serialBuf.ser.readline()
                if buf is not None:
                    buf_gbk = buf.decode("GBK")
                    self.TextView.append(buf_gbk)
                    self.TextView.moveCursor(self.TextView.textCursor().End)  # 移动光标到底部
                    print(buf_gbk)

            except Exception as e:
                self.serial_err.emit(e.args[0])  # 发送异常信号
                print(e.args[0])
                return 0

这里我是直接把串口数据读取跟界面追加显示放在一起了(这样貌似会有点bug,但这里懒得改了)
串口读取完成后直接追加到显示窗口,然后把光标移动至最后一行,就能实现本文开头那样的效果了。
记得要单独线程读取和刷新,不然会阻塞然后崩掉。

结尾

软件全部代码放在了Gitee
功能还未完成,有时间会不断更新
仓库链接

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kongbai_w

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

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

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

打赏作者

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

抵扣说明:

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

余额充值