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
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.