如何从Logger Class访问PyQT UI元素?

时间:2014-01-17 11:02:22

标签: python logging pyqt pyqt4

我正在使用以下Logger类从外部python模块接收日志消息。如何从这个类更新GUI,例如。在UI中向用户显示错误消息?

class Logger(object):
    def debug(self, msg):
        print('debug : %s' % msg)
    def error(self, msg):
        print('error : %s' % msg)

编辑(澄清):我正在导入一个外部python模块,该模块允许使用作为参数字典传递给它的logging.Logger实例来监听来自它的发出的日志消息。我正在使用上面的Logger Class代码在我的GUI应用程序中监听这些日志消息,这很好用,我的问题是如何在GUI上显示这些消息。我尝试使用self.ui.someLabel.setText(msg),但这不起作用,我知道这是一个范围问题,但是如何让这个工作,因为我在这里学习python。

1 个答案:

答案 0 :(得分:0)

例如,假设您已将mainwindow和logger初始化为一个文件,如下所示:

mainWindow = MainWindow()
logger = Logger()

您应该向您的记录器提供对mainWindow的引用:

logger.mainWindow = mainWindow

然后你可以像这样使用它:

class Logger(object):
    def debug(self, msg):
        self.mainWindow.ui.someLabel.setText(msg)
        print('debug : %s' % msg)

另一种方法是在初始化时将mainWindow实例传递给Logger:

mainWindow = MainWindow()
logger = Logger(mainWindow)

然后您的Logger类将是这样的:

class Logger(object):
    def __init__(self, mainWindow):
        self.mainWindow = mainWindow

    def debug(self, msg):
        self.mainWindow.ui.someLabel.setText(msg)
        print('debug : %s' % msg)