2014-01-17 22 views
0

我正在使用以下Logger類來接收來自外部python模塊的日誌消息。如何從這個類更新例如。在UI中向用戶顯示錯誤消息?如何從記錄器類訪問PyQT UI元素?

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

編輯(澄清):我導入其允許使用logging.Logger實例傳遞給它的參數字典收聽從它發射的日誌消息外部Python模塊。我正在使用上面的代碼Logger Class在我的GUI應用程序中收聽這些日誌消息,這很好,我的問題是如何在GUI上顯示這些消息。我嘗試使用self.ui.someLabel.setText(msg),但那是行不通的,我知道這是一個範圍問題,但如何得到這個工作,因爲我在這裏學習python。

+0

你能澄清你的代碼結構?你有一邊是GUI,另一邊是記錄器?您將記錄器消息傳達給GUI? – Frodon

回答

0

例如,假設你已經初始化,您的主窗口,並記錄在一個文件中是這樣的:

mainWindow = MainWindow() 
logger = Logger() 

的,你應該給一個參考主窗口到您的記錄:

logger.mainWindow = mainWindow 

然後你可以使用它是這樣的:

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

另一種方法是傳遞mainWindow實例t Ø記錄器,同時對其進行初始化:

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) 
+0

請致電閱讀該問題的更新。 – Stacked

+0

更新了答案。 @Stacked – Sassan