wxPython StyledTextCtrl Установить (частичный) цвет текста

Как установить цвет текста в StyledTextCtrl, но только какое-то слово? Я имею в виду, скажем, у меня есть

Люси голубая

и я хочу, чтобы только слово "синий" было окрашено в синий

3 ответа

Смотрите демонстрацию wxPython для StyledTextCtrl. Это показывает, как сделать это точно. Я думаю, что вы ищете что-то вроде этого:

ed.StartStyling(190, 0xff)
ed.SetStyling(20, 2)

Где 190 - 190-й символ, и вы задаете стиль для следующих 20 символов.

Используйте это, где text_area является StyledCtrlText

self.text_area.StyleSetSpec(stc.STC_P_DEFAULT,"fore:#FF0000")

Затем поместите текст, который вы хотите изменить цвет

Чтобы изменить стиль линии, вы должны получить позицию первого байта и конечного байта. затем вы можете определить стиль (StyleSetSpec), который начинается с первого байта (StartStyling) и который применяется ко всей строке (SetStyling). Вы должны повторно применить стиль по умолчанию (0) в конце байта. Вот мой код:

# Move to line
self.editname.GotoLine(line-1)
# Get position
pos = self.editname.GetCurrentPos()
# Define style 4
self.editname.StyleSetSpec(4, "back:#ff0000")
# Starts style at position pos
self.editname.StartStyling(pos, 0xffff)
# Until posend position, apply style 4
self.editname.SetStyling(posend-pos, 4)
# Restore style 0 after the ending byte of the line
self.editname.SetStyling(posend, 0)
Другие вопросы по тегам