Можно ли каким-либо способом изменить цвет отдельного слова в QTextEdit?
Например в многих IDE есть подсветка синтаксиса (у разных слов разный цвет).
Можно ли это реализовать без использования модуля QScintilla? Дайте наводку хотя бы.
Ответы (2 шт):
Автор решения: n1tr0xs
→ Ссылка
Отдельный участок текста в QTextEdit нельзя изменить стандартными Qt средствами.
Автор решения: S. Nick
→ Ссылка
Конечно можно, сделайте по любому слову двойной клик:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class TextBrowser(QtWidgets.QTextEdit):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def mouseDoubleClickEvent(self, e):
fmt = QtGui.QTextCharFormat()
fmt.setFont(QtGui.QFont("Times", 12, QtGui.QFont.Bold))
fmt.setTextOutline(QtGui.QPen(QtGui.QColor("red")))
self.mergeCurrentCharFormat(fmt)
cursor = self.textCursor()
if not cursor.hasSelection():
cursor.select(cursor.WordUnderCursor)
cursor.mergeCharFormat(fmt)
self.mergeCurrentCharFormat(fmt)
cursor.clearSelection()
cursor.movePosition(QtGui.QTextCursor.EndOfWord)
self.setTextCursor(cursor)
super().mouseDoubleClickEvent(e)
class Widget(QtWidgets.QWidget):
def __init__(self):
super(Widget,self).__init__()
self.textBrowser = TextBrowser()
self.textBrowser.setPlainText("""
Можно ли каким-либо способом изменить цвет отдельного слова в QTextEdit?
Например в многих IDE есть подсветка синтаксиса (у разных слов разный цвет).
Можно ли это реализовать без использования модуля QScintilla? Дайте наводку хотя бы.
МОЖНО !!!
""")
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.textBrowser)
self.setLayout(layout)
cursor = self.textBrowser.textCursor()
cursor.clearSelection()
self.textBrowser.setTextCursor(cursor)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
myWin = Widget()
myWin.show()
sys.exit(app.exec_())
