鱼C论坛

 找回密码
 立即注册
查看: 1547|回复: 3

pyqt QtextBrowser中如何让每行的关键字和信息对齐

[复制链接]
发表于 2022-5-20 10:27:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请教大佬,小弟在用pyqt写界面,其中需要日志记录,我采用的是QextBrowser进行记录,日志中有关键字(‘INFO’、‘WARNING’、'ERROR'、‘DEBUG’),信息部分,还有时间部分,我需要的是各个关键字有颜色区分,同时日志中每一行关键字对齐,信息部分对齐,时间部分对齐,这样看起来比较整洁美观,但是一直实现不了对齐,如图,不知道怎么解决。
# -*- coding: utf-8 -*-

import sys
import os
import time

from PyQt4 import QtGui,QtCore
##from   PyQt4.QtGui import *
##from   PyQt4.QtCore import *

class Show_LOGfile(QtGui.QDialog):  

    def __init__(self, parent=None):

        super(Show_LOGfile, self).__init__(parent)
                
        self.LOG_browser = QtGui.QTextBrowser()
        self.load_button=QtGui.QPushButton("open")

        self.clear_button=QtGui.QPushButton("delete")
        self.label=QtGui.QLabel("")
        buttonLayout=QtGui.QHBoxLayout()
        buttonLayout.addWidget(self.label)
        buttonLayout.addStretch()
        buttonLayout.addWidget(self.load_button)
        buttonLayout.addWidget(self.clear_button)
        
        layout = QtGui.QGridLayout() 
        layout.addLayout(buttonLayout,0, 0)
        layout.addWidget(self.LOG_browser,1, 0)  
        self.setLayout(layout)
        self.resize(840, 700)
        
        self.connect(self.load_button,QtCore.SIGNAL("clicked()"), self.load_file)
        self.connect(self.clear_button,QtCore.SIGNAL("clicked()"), self.clear_file)
        
    def load_file(self):

        m1='WARNING:The speed is too high'
        m2='ERROR:The tyre pressure is low,pleaese stop the car'
        m3='INFO:The Main power is enabled'
        m4='DEBUG:GPS MAP is missed'
        log_message=[m1,m2,m3,m4]

        for log in log_message:
            currentDateTime = QtCore.QDateTime.currentDateTime()
            currentDateStr = currentDateTime.toString("[yyyy.MM.dd hh:mm:ss ddd] ")
            s1=log.split(':')[0]
            s2=log.split(':')[1]
            if s1=='INFO':
                self.LOG_browser.append("<font color=black size=5 >%s</font><font size=5>%s</font><font color=blue size=5 >%s</font>" % ('INFO:',s2,currentDateStr))
            elif s1=='WARNING':
                self.LOG_browser.append("<font color=yellow size=5 >%s</font><font size=5>%s</font><font color=blue size=5 >%s</font>" % ('WARNING:',s2,currentDateStr))
            elif s1=='ERROR':
                self.LOG_browser.append("<font color=red size=5 >%s</font><font size=5>%s</font><font color=blue size=5 >%s</font>" % ('ERROR:',s2,currentDateStr))
            else:
                self.LOG_browser.append("<font color=brown size=5 >%s</font><font size=5>%s</font><font color=blue size=5 >%s</font>" % ('DEBUG:',s2,currentDateStr))
                
            self.LOG_browser.append("<font color=red size=5 >%s</font><font size=5>%s</font><font color=blue size=5 >%s</font>" % ('','',''))
            self.LOG_browser.moveCursor(QtGui.QTextCursor.End)

        
    def clear_file(self):
        self.LOG_browser.clear()



if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)
    window = Show_LOGfile()
    window.show()
    sys.exit(app.exec_())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-20 10:28:24 | 显示全部楼层
图片好像贴不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-20 12:19:55 | 显示全部楼层
本帖最后由 hrpzcf 于 2022-5-20 12:25 编辑

用你的文字生成html后再在QTextBrowser中显示,文字的对齐使用html的办法,比如有边框或者无边框无边框的表格。
或者干脆用用QTableWidget显示数据也可以,QTableWidget的子项QTableWidgetItem也支持字体颜色或者背景颜色的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-20 16:52:10 | 显示全部楼层
hrpzcf 发表于 2022-5-20 12:19
用你的文字生成html后再在QTextBrowser中显示,文字的对齐使用html的办法,比如有边框或者无边框无边框的表 ...

好的,多谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 05:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表