wxPython SetStyle не работает

Я использую wx.TextCtrl.SetStyle() в своем коде, но он меняет стиль всего текста!

Вот мой код:

# Get all the words in my TextCtrl
words = self.GetValue().split(" ")
# Find out what the farthest uneditable word is.
farthest_uneditable = (len(words) // length_constants["words_per_block"]) * length_constants["words_per_block"]
# Use this word knowledge to calculate the actual farthest uneditable character is
farthest_position = 0
for word in range(farthest_uneditable):
    farthest_position += len(words[word]) + 1
# Make all the uneditable text (everything from the beginning to farthest_uneditable) have a grey background
self.SetStyle(0, farthest_position, wx.TextAttr(wx.NullColour, (84, 84, 84)))

Я проверил этот код и убедился, что моя farthest_position не находится в конце моего TextCtrl (он был в ожидаемой позиции каждый раз). По какой-то причине весь текст в моем поле TextCtrl становится серым.

1 ответ

Из документации по wxPython 2.8. Последний абзац объясняет, где ваша проблема:

"** wxTextCtrl:: GetRange

виртуальный wxString GetRange(long from, long to) const**

Возвращает строку, содержащую текст, начинающийся с позиций от и до до в элементе управления. Позиции должны быть возвращены другим методом wxTextCtrl.

Обратите внимание, что позиции в многострочном wxTextCtrl не соответствуют индексам в строке, возвращаемой GetValue из-за различных представлений новой строки (CR или CR LF), и поэтому этот метод следует использовать для получения правильных результатов вместо извлечения частей всей стоимости. Это также может быть более эффективным, особенно если элемент управления содержит много данных ".

Другие вопросы по тегам