Вопрос

Я пытаюсь добавить подсветку синтаксиса в текстовый редактор PyQt4.В документации я нашел пример, который работает при компиляции из C++, но когда я конвертирую его в Python/PyQt, он больше не работает.

Часть кода, которая дает сбой (больше ничего не выделяет):

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)

который вызывается:

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

Кто-нибудь знает, почему это не работает?

Версии, которые я использую:Питон 2.6.2, PyQt 4.4.4

Это было полезно?

Решение

Хорошо...Оказывается, я не сошел с ума, я просто использовал устаревшую версию PyQt4.

Для информации, версия PyQt4, поставляемая с Ubuntu 9.04, — 4.4.4, но для этой функции требуется версия 4.5+.

Я обновился до PyQt4 4.6, и он работает нормально (плюс 4.6, похоже, также имеет некоторые хорошие новые функции).

Другие советы

Сохранять lineColor где-то (например self.lineColor).В противном случае Python отбросит объект при возврате метода и format будет использовать недопустимый указатель.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top