Я пытаюсь добавить подсветку синтаксиса в текстовый редактор в PyQt4. Я нашел пример в документации, которая работает при компиляции из C++, но когда я конвертирую ее в Python/PyQt, она больше не работает.PyQt4 Подсветка
Часть кода, который не выходит из строя (больше не выделяет ничего) является:
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)
Кто-нибудь есть какие-либо идеи, почему это не работает?
Версии я usuing являются: Python 2.6.2, PyQt 4.4.4
Благодарю вас за ответ. К сожалению, это не помогло. Я уверен, что метод setBackground должен содержать ссылку на lineColor. – JonahSan
Нет, это не так: Python передает указатель на метод C++, который хранит его внутри. Когда он возвращает часть Python, удаляется (также удаляет объект C++), и теперь setBackground() указывает на недопустимый экземпляр. –
PS: Я боялся, что это не причина проблемы, но это ошибка, тем не менее. –