PySide 和 python 日志记录 [英] PySide and python logging

查看:95
本文介绍了PySide 和 python 日志记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用 PySide 创建一个简单的应用程序,只是为了从 python 日志中输出.

I want to use PySide to create a simple application just to output from python logging.

def mpm_print():
    print 'OK'

def mpm_log():
   log.info('OK')

class LabWindow(QtGui.QMainWindow):
    def __init__(self):
        super(LabWindow, self).__init__()

        self.initUI()
        mpm_print()
        mpm_log()

    def initUI(self):

        font = QtGui.QFont()
        font.setFamily("Courier")
        font.setFixedPitch(True)
        font.setPointSize(10)

        self.qtxt = QtGui.QTextEdit(self)
        self.qtxt.resize(self.size())
        self.qtxt.setReadOnly(True)
        self.qtxt.setFont(font)

        self.resize(640, 512)
        self.setWindowTitle('Efficient Algorithms Lab')

        self.show()

我想知道:

  • 如何重定向标准输出以写入 QTextEdit ?
  • 如何编写 logging.Handler 来登录 QTextEdit ?

谢谢

推荐答案

这是从 PyQt 邮件列表,但应该适用于 PySide

This is copy-pasted from PyQt mailing-list, but should be applicable to PySide

这应该可以满足您的需求.

This should do what you want.

class OutLog:
    def __init__(self, edit, out=None, color=None):
        """(edit, out=None, color=None) -> can write stdout, stderr to a
        QTextEdit.
        edit = QTextEdit
        out = alternate stream ( can be the original sys.stdout )
        color = alternate color (i.e. color stderr a different color)
        """
        self.edit = edit
        self.out = None
        self.color = color

    def write(self, m):
        if self.color:
            tc = self.edit.textColor()
            self.edit.setTextColor(self.color)

        self.edit.moveCursor(QtGui.QTextCursor.End)
        self.edit.insertPlainText( m )

        if self.color:
            self.edit.setTextColor(tc)

        if self.out:
            self.out.write(m)

示例用法:

import sys
sys.stdout = OutLog( edit, sys.stdout)
sys.stderr = OutLog( edit, sys.stderr, QtGui.QColor(255,0,0) )

这篇关于PySide 和 python 日志记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆