【问题标题】:Exception from QTextEdit textChanged signalQTextEdit textChanged 信号的异常
【发布时间】:2017-11-27 14:54:06
【问题描述】:

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

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

【问题讨论】:

标签: python pyqt5 signals-slots qtextedit


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多