QTextEdit textChanged 信号异常

Exception from QTextEdit textChanged signal

我正在使用 Python3 和 PyQt5 创建一个包含 QLineEditQTextEdit 等表单元素的应用程序。

我从 QLineEdit 中收集数据如下(工作正常):

    self.rolAdi = QtWidgets.QLineEdit(self.centralWidget)
    self.rolAdi.setObjectName("rolAdi")

    self.rolAdi.textChanged.connect(self.textSonDurum)

def textSonDurum(self, s):
    print("Text changed...>>> "+s)

但是,使用 QTextEdit 控件的相同方法不起作用 - 每当我更改控件的内容时程序都会停止:

   self.IP = QtWidgets.QTextEdit(self.centralWidget)
   self.IP.setObjectName("IP")

   self.IP.textChanged.connect(self.textSonDurum)

def textSonDurum(self, s):
    print("Text changed...>>> "+s)

我研究了这个问题,发现了一个涉及使用断开连接功能的建议,但在 PyQt5 中找不到。

self.IP.textChanged.disconnect()

输出错误:

TypeError: disconnect() failed between 'textChanged' and all its connections

(完整的代码很长,无法粘贴在这里,但如果您需要任何其他部分,请告诉我)。

QTextEdit textChanged signal has a different signature to the QLineEdit textChanged signal,因为它不传递已更改的文本。这是因为 QTextEdit 支持富文本(即 html)和纯文本,因此您需要明确请求您想要的内容类型:

   self.IP.textChanged.connect(self.textSonDurum)

def textSonDurum(self):
    print("Text changed...>>> " + self.IP.toPlainText())