Pergunta
Eu estou tentando adicionar um pouco de destaque de sintaxe para um editor de texto em PyQt4. Eu encontrei um exemplo na documentação que funciona encontrar quando compilados a partir de C ++, mas quando eu convertê-lo em Python / PyQt ele não funciona mais.
A parte do código que não (não mais destaques qualquer coisa) é:
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 é chamado por:
self.connect(self, SIGNAL('cursorPositionChanged()'), self.highlightCurrentLine)
Alguém tem alguma idéia de por que isso não funciona?
As versões estou usuing são: Python 2.6.2, 4.4.4 PyQt
Solução
Ok ... Acontece que eu não estava ficando louco, eu estava apenas usando um fora da versão data de PyQt4.
Para obter informações da versão do PyQt4 que vem com o Ubuntu 9.04 é 4.4.4, mas esta funcionalidade parece exigir 4.5 +.
Eu atualizado para PyQt4 4.6 e ele funciona muito bem (mais 4,6 parece ter algumas novas funcionalidades muito agradáveis).
Outras dicas
Save lineColor
algum lugar (como self.lineColor
). Caso contrário, o Python irá desfazer de um objecto quando o método de retorno e o format
usará um ponteiro ilegal.