Question

Je suis en train d'ajouter une coloration syntaxique à un éditeur de texte PyQt4. Je l'ai trouvé un exemple dans la documentation qui fonctionne lorsqu'il est compilé à partir de trouver C ++, mais quand je le convertir en Python / PyQt il ne fonctionne plus.

La partie du code qui ne (plus rien met en avant) est:

def highlightCurrentLine(self):

    extraSelections = []

    if not self.isReadOnly():
        selection = QTextEdit.ExtraSelection()

        lineColor = QColor(Qt.yellow).lighter(160)

        selection.format.setBackground(lineColor)
        selection.format.setProperty(QTextFormat.FullWidthSelection, QVariant(True))
        selection.cursor = self.textCursor()
        selection.cursor.clearSelection()
        extraSelections.append(selection)

    self.setExtraSelections(extraSelections)

qui est appelé par:

self.connect(self, SIGNAL('cursorPositionChanged()'), self.highlightCurrentLine)

Quelqu'un a une idée de pourquoi cela ne fonctionne pas?

Les versions je suis usuing sont: Python 2.6.2, 4.4.4 PyQt

Était-ce utile?

La solution

Ok ... je suis se avère ne pas devenir fou, je suis juste en utilisant une sortie de version date de PyQt4.

Pour plus d'informations la version de PyQt4 livré avec Ubuntu 9.04 est 4.4.4, mais cette fonctionnalité semble nécessiter 4,5 +.

Je l'ai mis à jour à PyQt4 4.6 et il fonctionne très bien (plus 4.6 semble avoir une belle nouvelle fonctionnalité aussi).

Autres conseils

Enregistrer lineColor quelque part (comme self.lineColor). Dans le cas contraire, Python jeter l'objet lors du retour de la méthode et la format utilisera un pointeur illégal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top