Индекс - это общий метод указания позиции в содержимом текстового виджета. Индекс - это строка, имеющая одну из следующих форм:
'line.column'
Позиция непосредственно перед заданным столбцом column (считая от нуля) на заданной строке line (считая от единицы). Примеры:
'1.0'- позиция начала текста;'2.3'- позиция перед четвертым символом второй строки.
'line.end'
Позиция непосредственно перед новой строкой в конце данной строки (считая от единицы). Так, например, индекс
'10.end'- это позиция в конце десятой строки.
tk.INSERT
Позиция курсора вставки в текстовом виджете. Эта константа равна строке
'insert'.
tk.CURRENT
Позиция символа, ближайшего к указателю мыши. Эта константа равна строке
'current'.
tk.END
Позиция после последнего символа текста. Эта константа равна строке
'end'.
tk.SEL_FIRST
Если часть текста в виджете в данный момент выделена (например, при перетаскивании мыши), то это позиция перед началом выделения. Если вы попытаетесь использовать этот индекс, а ничего не выделено, будет вызвано исключение
tk.TclError. Эта константа равна строке'sel.first'.
tk.SEL_LAST
Позиция после конца выделения, если таковая имеется. Как и в случае с
SEL_FIRST, вы получите исключениеtk.TclError, если вы используете такой индекс, а выделения нет. Эта константа равна строке'sel.last'.
'markname'
Вы можете использовать метку в качестве индекса; просто передайте ее имя там, где ожидается индекс. Смотрите Раздел 24.2, "Метки виджета Text".
'tag.first'
Позиция перед первым символом области с тегом
tag; см. Раздел 24.5, "Теги виджета Text".
'tag.last'
Позиция после последнего символа области с тегом.
'@x,y'
Позиция перед символом, ближайшим к координате (
x,y).
embedded-object
Если в текстовый виджет встроено изображение или окно, то в качестве индекса можно использовать
PhotoImage,BitmapImageили встроенный виджет. Смотрите Раздел 24.3, "Изображения виджета Text" и Раздел 24.4, "Окна виджета Text".
В дополнение к приведенным выше вариантам базовых индексов вы можете создавать произвольные сложные выражения, добавляя к базовому индексу или индексному выражению любой из этих суффиксов:
+ n chars
Начиная с заданного индекса, переместиться вперед на
nсимволов. Эта операция будет пересекать границы строк.
Например, предположим, что первая строка выглядит следующим образом:
abcdef
Индексное выражение “
1.0 + 5 chars” относится к позиции междуeиf. Вы можете опускать пробелы и сокращать ключевые слова в этих выражениях, если результат будет однозначным. Этот пример можно сократить до "1.0+5c".
- n chars
Аналогично предыдущей форме, но позиция сдвигается назад на
nсимволов.
+ n lines
Перемещает на
nстрок за заданный индекс. Tkinter пытается оставить новую позицию в том же столбце, в котором она была в строке, которую он покинул, но если строка в новой позиции короче, то новая позиция будет в конце строки.
- n lines
Перемещает на
nстрок до заданного индекса.
linestart
Перемещает в позицию перед первым символом заданного индекса. Например, позиция "
current linestart" относится к началу строки, ближайшей к указателю мыши.
lineend
Перемещает на позицию после последнего символа заданного индекса. Например, позиция "
sel.last lineend" относится к концу строки, содержащей конец текущего выделения.
wordstart
Позиция перед началом слова, содержащего заданный индекс. Например, индекс "
11.44 wordstart" указывает на позицию перед словом, содержащим позицию 44 в строке 11.
Для этой операции слово представляет собой либо строку из последовательных буквенных, цифровых или подстрочных символов (
_), либо одиночный символ, который не относится ни к одному из этих типов.