lunar hat geschrieben:@anogayales: Welche Methode von "QLineEdit" meinst Du? "QLineEdit.setText" löst ebenfalls "QLineEdit.textChanged" aus, alles andere wäre auch reichlich überraschend.
Das hier habe ich gemeint. Sorry wenn ich mich missverständlich ausgedrückt habe.
When the text changes the textChanged() signal is emitted; when the text changes other than by calling setText() the textEdited() signal is emitted;
Aber das tut hier ja nichts zur Sache, da ich a QTextEdit benutzen muss (HTML support).
Die Verbindung zum Signal zu trennen, ist eine Möglichkeit, aber bitte korrekt. Dein Versuch trennt alle möglichen Verbindungen, stellt danach aber nur eine einzige wieder her. Trenne also nur den einen, speziellen Slot mit "self.editor.textChanged.disconnect(self.update_text)". Falls das Deine Python-Version zum Absturz bringt, wäre es sinnvoll, die Python-Version samt der verwendeten Anbindung zu erwähnen.
So ich habs nochmal getestet. Jetzt kommt zumindest kein Fehler. Man kann aber leider auch nichts editieren, da es mir scheint, dass der Cursor immer an die Ausgangsposition springt. Auch einfaches eintippen ist nicht möglich.
lunar hat geschrieben:
Die andere Möglichkeit ist so offensichtlich, dass ich überrascht bin, sie extra erwähnen zu müssen. Nutze ein Attribut in der umgebenden Klasse, um die Rekursion zu verhindern:
Code: Alles auswählen
def update_text(self):
if self._is_updating_text:
return
self._is_updating_text = True
self.editor.setHtml('<h1>Spam with eggs</h1>')
self._is_updating_text = False
Auch schon getestet, leider tritt das gleiche Problem wie oben auf. Meine Python Version: 2.6.6. PyQt4 Version: 4.8.1
Falls ein Minimalbeispiel erwünscht ist, so kann ich dieses gerne liefern.
Grüße,
anogayales