Чтобы создать простой столбец столбцов столбцов для моего текстового редактора, я решил просто использовать функцию index
виджета tkinter.Text
. Фактически, функция index
возвращает строку, представляющую строку и столбец координат, переданных в качестве аргумента.Почему координаты текстового курсора не обновляются правильно?
В частности, я использую cursor_pos = text.index(tkinter.INSERT)
, чтобы получить индекс курсора, так как, с effbot сайта на tkinter.INSERT
:
tkinter.INSERT соответствует вставки курсора.
Проблема в том, что tkinter.INSERT
, кажется, дает мне последнюю позицию курсора, пока я не переместил курсор со стрелками (например).
Это функция, которая обрабатывает подсчет строк и столбцов:
def on_key_pressed(self, event=None):
"""Docs """
if self.tpane is not None:
print(self.lines, self.columns)
self.tpane.update()
cursor_pos = self.tpane._tabs[self.tpane.selected()].text.index(tkinter.INSERT)
self.lines = int(cursor_pos.split('.')[0])
self.columns = int(cursor_pos.split('.')[1])
print(self.lines, self.columns)
self.line_c.config(text='Lines: ' + str(self.lines))
self.col_c.config(text='Columns: ' + str(self.columns))
self.update()
Я не знаю, если вы можете понять ситуацию ... Когда я первый тип письма на редактора, self.columns
переменная не обновляется до 1 (остается 0), пока я не напишу вторую букву, где она обновится до 1, и так далее. Но есть трюк, чтобы сделать это обновление без написания нового письма. После написания первой буквы, если я перемещаю курсор со стрелками, он обновляет self.columns
до фактического 1.
Другая проблема заключается в том, что я пытаюсь удалить существующий символ. Например, если у меня есть 3-х символов (и предположим, у меня есть self.columns
до 3), и я нажимаю delete
, self.columns
обновление необъяснимо к 4
, и если я пытаюсь удалить другой символ, в этот момент, он обновляет до 3.
Эта проблема существует и для self.lines
в обработчике событий on_key_pressed
. Я не уверен, что это должно произойти, и если да, то у меня что-то не хватает ...