2017-10-11 32 views
0

1 제공을 가지고, 여기 내 코드입니다 : 내가 코드를 실행PyQt5 - 형식 오류 : 신호가 0 인수 (들)하지만 난 <code>QTextEdit</code>에 "sys.stdout"를 리디렉션하려고

class Communicate(QObject): 
    printText = pyqtSignal() 
    def write(self, text): 
     self.printText.emit(str(text)) 

class UI(QWidget): 
    def __init__(self, parent = None): 
     QWidget.__init__(self) 
     ... 
     self.textedit = QTextEdit(self) 
     self.textedit.setGeometry(400,20,220,300) 
     self.c = Communicate() 
     self.c.printText.connect(self.textedit.insertPlainText) 
     sys.stdout = self.c 


if __name__ == "__main__": 
    ... 

, 내가 가지고 TypeError: Communicate.printText[] signal has 0 argument(s) but 1 provided. 그러나 self.printText.emit()에 아무런 인수도 제공하지 않으려 고했을 때 self.textedit.insertPlainText은 1 개의 인수가 필요하다고합니다. 내가 뭐 놓친 거 없니? 귀하의 답변을 주시면 감사하겠습니다.

답변

0

신호를 정의 할 때 매개 변수를 지정해야합니다. 또한 속성 오류를 방지하려면 dummy flush 메서드를 제공해야합니다.

class Communicate(QObject): 
    printText = pyqtSignal(str) 

    def write(self, text): 
     self.printText.emit(text) 

    def flush(self): 
     pass