我使用Python3和PyQt5创建包含QLineEdit
和QTextEdit
等表单元素的应用程序。
我从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
(完整的代码很长,可以将其粘贴到此处,但如果您需要任何其他部分,请告诉我。)
答案 0 :(得分:2)
QTextEdit
textChanged signal与QLineEdit
textChanged signal的签名不同,因为它不会传递已更改的文字。这是因为QTextEdit
支持富文本(即html)和纯文本,因此您需要显式请求所需的内容类型:
self.IP.textChanged.connect(self.textSonDurum)
def textSonDurum(self):
print("Text changed...>>> " + self.IP.toPlainText())