2014-01-17 2 views
0

외부 파이썬 모듈에서 로그 메시지를 받기 위해 다음 Logger 클래스를 사용하고 있습니다. 예를 들어이 클래스에서 GUI를 업데이트하는 방법. UI에 사용자에게 오류 메시지를 표시 하시겠습니까? (해명)Logger 클래스에서 PyQT UI 요소에 액세스하는 방법은 무엇입니까?

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

편집 : 나는 매개 변수 사전으로 전달 logging.Logger 인스턴스를 사용하여 그것에서 방출되는 로그 메시지를 듣고 수있는 외부 파이썬 모듈을 수입하고있다. 위의 Logger Class 코드를 사용하여 잘 작동하는 내 GUI 응용 프로그램에서 이러한 로그 메시지를 듣고, 제 질문은 GUI에서 이러한 메시지를 표시하는 방법입니다. 나는 self.ui.someLabel.setText(msg)을 사용해 보았습니다.하지만 작동하지 않습니다. 범위 문제입니다.하지만 여기서는 파이썬을 배우면서이 작업을 수행하는 방법을 알고 있습니다. 예를 들어

+0

당신이 당신의 코드 구조를 명확히 수 :

mainWindow = MainWindow() logger = Logger(mainWindow) 

은 다음 Logger 클래스는 다음과 같이 될 것이다? 1면에는 GUI가 있고 다른면에는 로거가 있습니까? 로거 메시지를 GUI에 전달 하시겠습니까? – Frodon

답변

0

당신이 이런 식으로 하나 개의 파일에 MainWindow를하고 로거를 초기화 있다고 가정

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 인스턴스 t 로거 O를를 초기화하는 동안 :

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

Pls. 질문에 대한 업데이트를 읽으십시오. – Stacked

+0

답변을 업데이트했습니다. @Stacked – Sassan

관련 문제