2017-11-27 4 views
2

Ich verwende Python3 und PyQt5, um eine Anwendung zu erstellen, die Formularelemente wie QLineEdit und enthält.Ausnahme von QTextEdit textChanged Signal

ich Daten von einem QLineEdit sammeln wie folgt (dies richtig funktioniert):

self.rolAdi = QtWidgets.QLineEdit(self.centralWidget) 
    self.rolAdi.setObjectName("rolAdi") 

    self.rolAdi.textChanged.connect(self.textSonDurum) 

def textSonDurum(self, s): 
    print("Text changed...>>> "+s) 

jedoch das gleiche Verfahren eine QTextEdit Steuerung mit nicht funktioniert - das Programm stoppt, wenn ich den Inhalt der Änderung Steuerung:

self.IP = QtWidgets.QTextEdit(self.centralWidget) 
    self.IP.setObjectName("IP") 

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

def textSonDurum(self, s): 
    print("Text changed...>>> "+s) 

ich über dieses Problem untersucht und ich fand die Trennfunktion einen Vorschlag beteiligt verwenden, aber kann es nicht in PyQt5 finden.

self.IP.textChanged.disconnect() 

Output Error:

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

(Der vollständige Code ist sehr lange es hier einfügen, aber lassen Sie mich wissen, wenn Sie anderen Teil benötigen).

+0

Wenn 'textChanged' Signal (' QTextEdit') angehoben Der neue Text ('s' Argument) wird nicht an den Slot übergeben: http://doc.qt.io/qt-5/qtextedit.html#textChanged vs http://doc.qt.io/qt-5/ qlineedit.html # textChanged – FJSevilla

Antwort

0

Die QTextEdittextChanged signal hat eine andere Signatur als die QLineEdittextChanged signal, in der es nicht den Text übergibt, der geändert wurde. Dies liegt daran, QTextEdit Rich-Text unterstützt (zB HTML) sowie Klartext, so dass Sie explizit müssen, um den Content-Type fordern Sie wollen:

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

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

Danke für Ihre Hilfe, das Problem wurde gelöst –