Вставка просто вставляет в конец текущей строки, присутствующей в виджете выходного текста.
Да, если указанный вами индекс находится за пределами конца, он будет вставленпосле последнего персонажа.Например, если у вас есть одна строка текста длиной десять символов, вставка в "3.0"
добавит ее в первую строку.Если вы хотите создать новую строку, вы должны вставить символ новой строки.
Примечание: END
- это имя константы, предоставленной tkinter.Это установлено в строку "end"
.Вы можете использовать либо строку, либо константу.
2 - я получаю только те символы, которые идут перед новой строкой в результате вызова функции text.get (), как у меняэто напечатано.
Это слишком расплывчато для решения.Функция get
всегда будет возвращать символы между двумя указанными ей индексами.Если вы не получаете ожидаемых символов, возможно, вы даете плохие индексы.
Как я уже говорил в других ответах и комментариях на ваши вопросы, индексы не являются числами с плавающей запятой .Скорее, индексы представляют собой строки в форме строки . символа .Таким образом, вам нужно использовать форматирование строки.Вы должны никогда использовать математику с плавающей точкой при вычислении индексов текстовых виджетов.
Например, предположим, у вас есть номер строки в n
, и вы хотите вычислить индекс 30-го символа от начала номера строки n
.Вы можете вычислить индекс следующим образом:
n = 1
index = "{}.0 +30c".format(n)
# => "1.0+30c"
Первая половина этого числа преобразует целое число 1
в строку 1.0
, а затем добавляет +30c
.Если у вас есть количество символов в целых числах y
, вы можете сделать следующее:
y = 30
n = 1
index = "{}.0+{}c".format(n,y)
# => "1.0+30c"
Примечание. Это будет работать только в том случае, если x
и y
являются целыми числами,В вашем коде вы инициализируете self.a
числом с плавающей запятой.Номер строки или номер символа - это целое число , а индекс, использующий эти числа, должен быть строка .
. Для получения дополнительной информации о методе format
см. str.format () в официальной документации Python.
3 - Текстовый виджет будет перепрыгивать строки текста, в которых нет символов новой строки при поиске новой строки.
Опять же, текстовый виджет получит все, что вы скажете.Он будет «перепрыгивать через строки», только если вы дадите ему два индекса, которые охватывают строки.