Как получить входную информацию из текстового поля Tkinter

  1. Пример кода для получения входного текста из виджета текста Tkinter
  2. Пример кода для получения входа без newline в The End из виджета текстового кинтера

Виджет Tkinter Text имеет метод get() для возврата входного текста из текстового поля, который имеет аргумент start позиции, и необязательный аргумент end для указания конечной позиции текста, подлежащего считыванию.

get(start, end=None)

Если end не задан, будет возвращен только один символ, указанный в позиции start.

Пример кода для получения входного текста из виджета текста Tkinter

import tkinter as tk
root = tk.Tk()
root.geometry("400x240")

def getTextInput():
    result=textExample.get("1.0","end")
    print(result)

textExample=tk.Text(root, height=10)
textExample.pack()
btnRead=tk.Button(root, height=1, width=10, text="Read", 
                    command=getTextInput)

btnRead.pack()

root.mainloop()
result=textExample.get("1.0", "end")

Позиция первого символа в виджете Text составляет 1.0 и может называться числом 1.0 или строкой "1.0".

"end" означает, что он считывает входные данные до конца поля Text. Мы также могли бы использовать tk.END вместо строки "end" здесь.

Tkinter получит Text Box Input_Inculde new line

Крошечная проблема, если мы укажем "end" в качестве конечной позиции возвращаемого текста, она включает также символ новой строки \n в конце текстовой строки, как видно из вышеприведенной анимации.

Мы можем изменить аргумент end в методе get на "end-1c", если не хотим, чтобы новая строка была в нашем входе.

"end-1c" означает, что позиция на один персонаж впереди "end".

Пример кода для получения входа без newline в The End из виджета текстового кинтера

import tkinter as tk
root = tk.Tk()
root.geometry("400x240")

def getTextInput():
    result=textExample.get(1.0, tk.END+"-1c")
    print(result)

textExample=tk.Text(root, height=10)
textExample.pack()
btnRead=tk.Button(root, height=1, width=10, text="Read", 
                    command=getTextInput)

btnRead.pack()

root.mainloop()

Tkinter получает текстовое поле Input_Not Inculde new line

Здесь мы могли бы также использовать tk.END+"-1c" помимо "end-1c" для устранения последнего символа - \n, потому что tk.END="end", следовательно tk.END+"-1c" равно "end "+"-1c"="end-1c".

Сопутствующая статья - Tkinter Text

  • Как сделать так, чтобы виджет Tkinter Text был только для чтения
  • Как удалить содержимое текстовой коробки Tkinter
  • Как установить шрифт текстового виджета Tkinter
  • Как настроить виджет для ввода текста с помощью кнопки
  • comments powered by Disqus