【问题标题】:PyQt5 - TypeError: signal has 0 argument(s) but 1 providedPyQt5 - TypeError:信号有 0 个参数,但提供了 1 个参数
【发布时间】:2018-03-23 10:21:58
【问题描述】:

我正在尝试将“sys.stdout”重定向到QTextEdit,这是我的代码:

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 个参数。我错过了什么?您的回答将不胜感激。

【问题讨论】:

    标签: python stdout pyqt5 signals-slots qtextedit


    【解决方案1】:

    定义信号时需要指定参数。此外,您可能应该提供一个虚拟的flush 方法,以避免属性错误:

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

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 1970-01-01
      • 2022-09-24
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 2017-10-05
      • 2016-01-30
      相关资源
      最近更新 更多