代码之家  ›  专栏  ›  技术社区  ›  Emre Uzun

QTextEdit textChanged信号异常

  •  3
  • Emre Uzun  · 技术社区  · 7 年前

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

    我研究了这个问题,发现了一个使用disconnect函数的建议,但在PyQt5中找不到。

    self.IP.textChanged.disconnect()
    

    输出错误 :

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

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

    1 回复  |  直到 7 年前
        1
  •  4
  •   ekhumoro    7 年前

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

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