Задать вопрос
@w0lkolak

PyQt5.QsyntaxHighlighter Как переподсветить строку n+1, после того как подсветил n строк?

Пишу редактор кода в котором присутствуют модальные команды (модификаторы, которые действуют пока их явно не отменят). Я знаю сколько строк будет подсвечено подключенным my_QsyntaxHighlighter. Мне нужно переподсветить строки следом до явной смены модальной команды.
Вопрос: откуда функция rehiglightNext должна запускаться? Запускал из последнего highlightBlock(счётчиком определил), но он не закрашивает текст пока return не сработает. То есть последний textblock окрасится после того как окрасятся строки следом за ним, а у них тоже будет последний блок, который окрасится после ещё одной копии rehiglightNext из которой я сразу выйду. Подсвечивается всё что нужно кроме последней строки изменённого текста и последней строки на rehighlight. Вылет происходит на этапе выхода из вложенного highlightа на highlight уровнем выше. Эта красота ещё и руинит debugger.
Откуда можно проследить, что highlight измененных строк текста полностью завершен и можно приступать к reghilight? Сигналов никаких не вижу...
Может, можно вообще не подключать highlight и напрямую его функции использовалась...?
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Сложный Комментировать
Решения вопроса 1
@w0lkolak Автор вопроса
Короче, универсального и красивого способа я не нашёл, посему просто в eventFilter напихал rehighlightNextBlocks.
def eventFilter(self, widget, event):
        if (event.type() == QEvent.KeyPress and widget is self):
            key = event.key()
            if действие1:
                 делаю действие1 руками не надеясь на return QWidget.eventFilter(self, widget, event)
                 rehighlightNextBlocks()
                 return True
            elif действие2:
                 делаю действие2
                 rehighlightNextBlocks()
                 return True
        return QWidget.eventFilter(self, widget, event)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы