Domanda

Sto cercando di aggiungere un po 'evidenziazione della sintassi di un editor di testo in PyQt4. Ho trovato un esempio nella documentazione che funziona trovare quando compilato da C ++, ma quando ho convertirlo in Python / PyQt non funziona più.

La parte del codice che non riesce (non evidenzia nulla) è:

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)

che viene chiamato da:

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

Qualcuno ha qualche idea del perché questo non funziona?

Le versioni sto usuing sono: Python 2.6.2, 4.4.4 PyQt

È stato utile?

Soluzione

Ok ... scopre non stavo andando pazza, stavo solo usando un fuori versione aggiornata di PyQt4.

Per informazioni la versione di PyQt4 fornita con Ubuntu 9.04 è 4.4.4, ma questa funzionalità sembra richiedere 4.5 +.

ho aggiornato a PyQt4 4.6 e funziona bene (più 4.6 sembra avere qualche bella nuova funzionalità troppo).

Altri suggerimenti

Salva lineColor da qualche parte (come self.lineColor). Altrimenti, Python scarterà l'oggetto quando restituisce il metodo e il format useranno un puntatore illegale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top