QTextEdit textChanged 信号异常
Exception from QTextEdit textChanged signal
我正在使用 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
(完整的代码很长,无法粘贴在这里,但如果您需要任何其他部分,请告诉我)。
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())
我正在使用 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
(完整的代码很长,无法粘贴在这里,但如果您需要任何其他部分,请告诉我)。
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())