Почему индекс конца 2.0 не завершает функцию get в начале строки 2? - PullRequest
0 голосов
/ 21 сентября 2019

У меня проблемы захват первой строки кода виджетов Tkinter Text .

При двух условиях, с символом перевода строки и без, введенным в поле виджетов ввода текста.

Далее больше

  • Я хотел бы захватить вторую строку кода
  • , а затем третью строку.

Я не имею в виду, строка до символа новой строки .
Я имею в виду строку, как в строке с длиной = шириной текставиджет в символах .

Передача floats и strings в качестве аргументов и литералов для тестирования простых, менее универсальных и долговечных случаев.

inputText = self.windowIn.get(1.0, 2.0)

Это захватывает все доконец введенной строки (то есть до первого символа новой строки).

1 Ответ

0 голосов
/ 21 сентября 2019

Если вы хотите получить определенное количество символов, вы можете использовать модификатор индекса.Например, чтобы получить первые 30 символов строки 1, вы можете использовать что-то вроде self.windowIn.get('1.0', '1.0+30c')

Текстовый виджет также имеет концепцию «отображаемой строки».Строка дисплея представляет то, что вы видите, принимая во внимание перенос, сделанный виджетом.Если у вас есть строка шириной 60 символов, а текст обернут в 30 символов, вы можете использовать подмодификатор display, чтобы получить все символы в отображаемой строке, а не в полной строке.

Например, рассмотрим виджет, который выглядит следующим образом, с одной строкой, которая переносится в 30 символов (т. Е. В строках нет новых строк):

123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890

Индекс 1.0 display lineendсовпадает с 1.29, так как это индекс 30-го символа.

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

Итак, сложив все это вместе, вы можете получить весь текст в первой отображаемой строке с помощью этого:

self.windowIn.get("1.0", "1.0 display lineend +1c").

Каноническое описание индексов текстовых виджетов см. В официальной документации по tcl / tk здесь: http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...