Я создаю чат, но не на основе Интернета, а на основе Python. в чате вы обмениваетесь информацией с AI API. Мне было интересно, есть ли библиотека, которая распознает, что это текст кода, и раскрашивает его в нужные цвета, потому что теперь я проделал некоторую ручную работу, и это выглядит плохо.
class PythonHighlighter(QSyntaxHighlighter):
def __init__(self, parent=None):
super().__init__(parent)
self._highlight_rules = []
# Keyword format
keyword_format = QTextCharFormat()
keyword_format.setForeground(QColor("blue"))
keyword_format.setFontWeight(QFont.Bold)
keywords = ["False", "await", "else", "import", "pass", "None", "break", "except", "in", "raise", "True", "class", "finally", "is", "return", "and", "continue", "for", "lambda", "try", "as", "def","from","nonlocal","while","assert","del","global","not","with","async","elif","if","or","yield","print","range","open","self"]
self._highlight_rules.append((QRegExp(r"\b" + "|".join(keywords) + r"\b"), keyword_format))
# String format
string_format = QTextCharFormat()
string_format.setForeground(QColor("green"))
self._highlight_rules.append((QRegExp(r"\".*\""), string_format))
self._highlight_rules.append((QRegExp(r"\'.*\'"), string_format))
# Comment format
comment_format = QTextCharFormat()
comment_format.setForeground(QColor("gray"))
self._highlight_rules.append((QRegExp(r"#[^\n]*"), comment_format))
def highlightBlock(self, text):
for pattern, format in self._highlight_rules:
expression = QRegExp(pattern)
index = expression.indexIn(text)
while index >= 0:
length = expression.matchedLength()
self.setFormat(index, length, format)
index = expression.indexIn(text, index + length)






Посмотрите Пигменты возможно этого будет достаточно.
Это дом Пигментов. Это универсальный инструмент подсветки синтаксиса, подходящий для использования на хостинге кода, форумах, вики или других приложениях, которым необходимо улучшить исходный код.
Основные моменты: