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