You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5 QTextBrowser串口终端实现时间戳循环行同位置覆盖不换行

PyQt5 串口终端时间戳行同屏刷新实现方案

下面是修改后的可用代码:

import re
from PyQt5.QtGui import QTextCursor

# 其他代码不变,仅修改read_serial函数即可
def read_serial(self):
    b = bytes(self.serialport.readAll())
    try:
        read_all = b.decode("utf-8")
        # 校验当前读取内容是否为带时间戳的刷新行
        timestamp_pattern = r'^\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}'
        is_timestamp_line = re.match(timestamp_pattern, read_all.strip()) is not None
        
        if is_timestamp_line:
            # 提取终端最后一行内容做对比
            all_text = self.Terminal.toPlainText()
            last_line = all_text.split("\n")[-1] if all_text else ""
            
            # 去除时间戳后对比核心内容
            read_content = re.sub(timestamp_pattern, "", read_all.strip())
            last_content = re.sub(timestamp_pattern, "", last_line.strip())
            
            if read_content == last_content:
                # 核心内容一致则删除上一行旧记录
                cursor = self.Terminal.textCursor()
                cursor.movePosition(QTextCursor.End)
                cursor.movePosition(QTextCursor.StartOfLine, QTextCursor.KeepAnchor)
                cursor.removeSelectedText()
                self.Terminal.setTextCursor(cursor)
        
        # 插入最新内容
        self.Terminal.moveCursor(QTextCursor.End)
        self.Terminal.insertPlainText(read_all)
        
        # 可选优化:仅当滚动条在最底部时自动滚动,不干扰用户查看历史日志
        scroll_bar = self.Terminal.verticalScrollBar()
        if scroll_bar.value() == scroll_bar.maximum():
            scroll_bar.setValue(scroll_bar.maximum())

    except UnicodeDecodeError:
        read_all = str(b)[2:-1]
        self.Terminal.moveCursor(QTextCursor.End)
        self.Terminal.insertPlainText(read_all)

核心修改说明

  • 新增行首时间戳匹配规则,只有符合格式的日志行才会触发替换逻辑,不会误删正常的指令返回内容
  • 对比内容前统一去除首尾空白字符,避免换行、回车符干扰匹配结果,保证重复行判断准确
  • 优化光标操作逻辑,删除旧行后直接插入新内容,不会产生多余空行,视觉上表现为同一行实时刷新
  • 新增滚动条智能锚定逻辑,用户查看历史日志时不会被自动刷新的内容打断

如果后续设备调整了时间戳输出格式,仅需修改timestamp_pattern的正则规则即可适配。

内容的提问来源于stack exchange,提问作者user16794957

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:24:10