首页 > 其他分享 >用PyQt5中的textline实现log的实时显示

用PyQt5中的textline实现log的实时显示

时间:2024-10-22 15:17:15浏览次数:10  
标签:__ ... log self PyQt5 textline QLineEdit 日志

在PyQt5中使用 QLineEdit(即 QTextLine 的实现类之一)来实现日志的实时显示是可行的,但可能不适合大规模、多行日志的输出,因为 QLineEdit 仅支持单行文本。若要显示多行日志,建议使用 QTextEdit,它更适合日志实时显示。

但如果你确实希望使用 QLineEdit 来实现简单的日志输出,可以通过动态更新 QLineEdit 的内容实现。下面是一个使用 QLineEditQTimer 的简单例子,来模拟日志的实时更新。

使用 QLineEdit 实现简单的日志输出

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import QTimer

class LogWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置主窗口
        self.setWindowTitle("实时日志显示 - QLineEdit")

        # 初始化日志行数和日志内容
        self.log_line = QLineEdit(self)
        self.log_line.setReadOnly(True)

        # 布局
        layout = QVBoxLayout()
        layout.addWidget(self.log_line)

        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)

        # 定时器,用来模拟日志实时输出
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_log)
        self.timer.start(1000)  # 每1秒更新一次

        # 模拟日志列表
        self.logs = ["系统启动中...", "加载配置...", "连接数据库...", "启动服务...", "系统已准备就绪"]
        self.log_index = 0

    def update_log(self):
        if self.log_index < len(self.logs):
            new_log = self.logs[self.log_index]
            self.log_line.setText(new_log)
            self.log_index += 1
        else:
            self.timer.stop()  # 停止定时器

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = LogWindow()
    window.show()
    sys.exit(app.exec_())

如果需要显示多行日志,推荐使用 QTextEdit,如下所示:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import QTimer

class LogWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置主窗口
        self.setWindowTitle("实时日志显示 - QTextEdit")

        # 初始化多行文本框来显示日志
        self.log_box = QTextEdit(self)
        self.log_box.setReadOnly(True)  # 设置只读模式

        # 布局
        layout = QVBoxLayout()
        layout.addWidget(self.log_box)

        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)

        # 定时器,用来模拟日志实时输出
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_log)
        self.timer.start(1000)  # 每1秒更新一次

        # 模拟日志列表
        self.logs = ["系统启动中...", "加载配置...", "连接数据库...", "启动服务...", "系统已准备就绪"]
        self.log_index = 0

    def update_log(self):
        if self.log_index < len(self.logs):
            new_log = self.logs[self.log_index]
            self.log_box.append(new_log)  # 添加新的日志
            self.log_index += 1
        else:
            self.timer.stop()  # 停止定时器

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = LogWindow()
    window.show()
    sys.exit(app.exec_())
  • QLineEdit 用于单行日志的实时显示,通过定时器 QTimer 模拟日志的不断刷新。
  • QTextEdit 更适合多行日志,使用 append 方法逐行添加日志内容。

使用 QTextEdit 更加灵活且适合实际日志场景。

标签:__,...,log,self,PyQt5,textline,QLineEdit,日志
From: https://blog.csdn.net/kuixiang_yin/article/details/143159437

相关文章

  • logback和日志分离管理
    目录一、日志框架1.什么是日志框架?2.日志框架的作用3.常见的日志框架3.1.Log4j3.2.Logback3.3.java.util.logging(JUL)3.4.SLF4J(日志门面)(SimpleLoggingFacadeforJava)4.常见的日志级别5.讲讲logback5.1.logback-core5.2.logback-classic5.3.logback-access5.4.学到......
  • git报错系统列---bad ref for .git/logs/refs/remotes/origin/develop
    解决方案:先执行命令:gitgc--prune=now gitremotepruneorigin尝试执行后失败后会报如下的错:D:\myProjects\dms-api\src\main\java\com\netease\dms>gitgc--prune=nowerror:badreffor.git/logs/refs/remotes/origin/deverror:badreffor.git/logs/refs/r......
  • ELK04 ELK综合案例, logstash写入mysql, kibana访问验证 ubuntu使用
    6ELK综合实战案例6.1Filebeat收集Nginx日志利用Redis缓存发送至Elasticsearch 图上ip地址仅供参考6.1.2.2修改Filebeat配置#安装redis(访问0.0.0.0和密码123456),nginx(访问日志json格式)[root@ubuntu~]#vim/etc/filebeat/filebeat.ymlfilebeat.inputs:-......
  • 使用Verilog设计分频模块(2Hz)
         在数字电路设计中,分频器是一种常见的电路,用于将一个高频的时钟信号分频到一个较低频率的时钟信号。本次将通过一个实际的例子,讲解如何使用Verilog语言设计一个分频器,将系统时钟信号分频到2Hz。        在数字电路系统的设计中,分频器是一种应用十分广泛......
  • 深度学习CNN算法狗类识别系统01-python带pyqt5界面数据集包配置
    项目基本介绍:【算法】深度学习CNN网络xception算法网络【环境】python=3.8pytorchopencvpyqt5matplotlib(含详细环境配置教程视频)【文件】训练、预测全部源代码、训练好的型、数据集、模型评价指标:训练acc/loss曲线图和混淆矩阵图、UI界面源码及源文件、环境配置教程视......
  • 【小 w 的代数】(提供一种 n^2 log 的解法)
    前言:卖点记录CTH的发言CTH:你这真是n^3的CTH:我也不知道你线段树优化个啥,\(n^3\logn\)CTH:你优化到哪了啊CTH:······你从赛时打这个题到现在11个小时了,你从\(n^3\)打到\(n^3\logn\)了CTH:······再怎么着,我也不会一道题调三天CTH:我一直都说这么打......
  • 众智OA办公系统 Login SQL注入漏洞复现
    0x01产品描述:   ‌众智OA办公系统是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台。‌它凭借先进的技术和人性化的设计理念,实现了信息的快速传递和自动化处理,帮助企业和机构实现信息化、自动化、智能化和标准化的办公管理‌0x02漏洞描述:   众......
  • spark整合logback
    在使用ApacheSpark和Scala进行开发时,合理的日志管理是确保应用程序可维护性和可调试性的关键。以下是一些最佳日志实践,帮助你有效地管理和优化Spark应用程序的日志记录。1.使用合适的日志库首选的日志库是SLF4J(SimpleLoggingFacadeforJava)和Logback。SLF4J提供了......
  • SpringBoot使用默认的日志logback(2)—自定义配置+控制台输出sql语句
    原文链接:SpringBoot使用默认的日志logback(2)—自定义配置+控制台输出sql语句–每天进步一点点上一篇文章中简单介绍了springboot通过系统配置的方式配置日志:SpringBoot使用默认的日志logback(1)—系统配置这篇文章简单介绍一下日志的自定义配置。1.自定义配置springboot......
  • logback.xml配置文件详解
    原文链接:logback.xml配置文件详解–每天进步一点点上一篇文章介绍了springboot配置自定义日志文件logback.xml今天这篇文章简单介绍一下logback.xml配置文件的一些含义。1.基本结构logback的基本结构如下图:configuration表示配置的根节点appender用来格式化日志输出......