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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top