来自QTextEdit textChanged信号的异常

时间:2017-11-27 14:54:06

标签: python pyqt5 signals-slots qtextedit

我使用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

(完整的代码很长,可以将其粘贴到此处,但如果您需要任何其他部分,请告诉我。)

1 个答案:

答案 0 :(得分:2)

QTextEdit textChanged signalQLineEdit textChanged signal的签名不同,因为它不会传递已更改的文字。这是因为QTextEdit支持富文本(即html)和纯文本,因此您需要显式请求所需的内容类型:

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

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