adamxuwx 发表于 2022-5-20 10:27:00

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

请教大佬,小弟在用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=

      for log in log_message:
            currentDateTime = QtCore.QDateTime.currentDateTime()
            currentDateStr = currentDateTime.toString(" ")
            s1=log.split(':')
            s2=log.split(':')
            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_())

adamxuwx 发表于 2022-5-20 10:28:24

图片好像贴不了

hrpzcf 发表于 2022-5-20 12:19:55

本帖最后由 hrpzcf 于 2022-5-20 12:25 编辑

用你的文字生成html后再在QTextBrowser中显示,文字的对齐使用html的办法,比如有边框或者无边框无边框的表格。
或者干脆用用QTableWidget显示数据也可以,QTableWidget的子项QTableWidgetItem也支持字体颜色或者背景颜色的。

adamxuwx 发表于 2022-5-20 16:52:10

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

好的,多谢了
页: [1]
查看完整版本: pyqt QtextBrowser中如何让每行的关键字和信息对齐