Pregunta

Estoy intentando añadir un poco de resaltado de sintaxis para un editor de texto en PyQt4. He encontrado un ejemplo en la documentación que trabaja encontrar cuando compilado de C ++, pero cuando me convierto a Python / PyQt que ya no funciona.

La parte del código que falla (ya no destaca nada) es:

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)

que se llama por:

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

Alguien tiene alguna idea de por qué esto no funciona?

Las versiones que estoy usuing son: Python 2.6.2, 4.4.4 PyQt

¿Fue útil?

Solución

De acuerdo ... Resulta que yo no estaba volviendo loco, sólo estaba usando una versión desactualizada de PyQt4.

Para obtener información de la versión de PyQt4 que se incluye con Ubuntu 9.04 es 4.4.4, pero esta funcionalidad parece requerir 4.5 +.

He actualizado a PyQt4 4.6 y funciona bien (más 4.6 parece tener alguna buena nueva funcionalidad también).

Otros consejos

Guardar lineColor algún lugar (como self.lineColor). De lo contrario, Python descartará el objeto cuando el método retorna y el format utilizarán un puntero ilegal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top