Главная


24.1. Индексы виджетов Text

Индекс - это общий метод указания позиции в содержимом текстового виджета. Индекс - это строка, имеющая одну из следующих форм:

'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.

Для этой операции слово представляет собой либо строку из последовательных буквенных, цифровых или подстрочных символов (_), либо одиночный символ, который не относится ни к одному из этих типов.


>> Метки виджета Text