PyQt5 - TypeError: signal has 0 argument(s) but 1 provided
PyQt5 - TypeError: signal has 0 argument(s) but 1 provided
我正在尝试将 "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 个参数。我错过了什么?您的回答将不胜感激。
定义信号时需要指定参数。此外,您可能应该提供一个虚拟 flush
方法,以避免属性错误:
class Communicate(QObject):
printText = pyqtSignal(str)
def write(self, text):
self.printText.emit(text)
def flush(self):
pass
我正在尝试将 "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 个参数。我错过了什么?您的回答将不胜感激。
定义信号时需要指定参数。此外,您可能应该提供一个虚拟 flush
方法,以避免属性错误:
class Communicate(QObject):
printText = pyqtSignal(str)
def write(self, text):
self.printText.emit(text)
def flush(self):
pass