2017-10-11 52 views
0

我想重定向「sys.stdout的」以QTextEdit,這裏是我的代碼:PyQt5 - 類型錯誤:信號爲0參數(一個或多個),但1提供

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

您需要在定義信號時指定參數。此外,您應該提供一個虛擬flush方法,以避免屬性錯誤:

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

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

    def flush(self): 
     pass 
相關問題