How to get the value of an Entry widget in Tkinter?
Let us suppose that we have created an Entry widget and we want to get the value of it. In this case, we can use the .get() method. It maps the input object into a variable which can be used further to print or display the entered value.
Example
In this example, we will create an application that will display the input text thorough a label widget.
Output
Running the above code will display a window that contains an entry widget and a button.
In the given output, if we will click the Enter button. It will mimic the input value from the Entry widget.
Как получить значение из entry tkinter
Элемент Entry представляет поле для ввода текста. С помощью конструктора Entry можно установить ряд параметров, основные из них:
background : фоновый цвет
cursor : курсор указателя мыши при наведении на текстовое поле
foreground : цвет текста
font : шрифт текста
justify : устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER — по центру, RIGHT — по правому краю
show : задает маску для вводимых символов
state : состояние элемента, может принимать значения NORMAL (по умолчанию) и DISABLED
textvariable : устанавливает привязку к элементу StringVar
width : ширина элемента
Элемент Entry имеет ряд методов. Основные из них:
insert(index, str) : вставляет в текстовое поле строку по определенному индексу
get() : возвращает введенный в текстовое поле текст
delete(first, last=None) : удаляет символ по индексу first. Если указан параметр last, то удаление производится до индекса last. Чтобы удалить до конца, в качестве второго параметра можно использовать значение END.
focus() : установить фокус на текстовое поле
Простейшее текстовое поле:

Получение введенного текста
Для получения текста из Entry, можно использовать его метод get() . Так, определим элемент Entry и по нажатию на кнопку выведем введенный текст на текстовую метку:

Вставка и удаление текста
Рассмотрим вставку и удаление текста в Entry:
При запуске программы в текстовое поле сразу же добавляется текст по умолчанию:
Кнопка Clear очищает оба поля, вызывая метод delete:
Вторая кнопка, используя метод get, получает введенный текст:
Валидация
С помощью параметра validate конструктора Entry можно задать, когда проводить валидацию введенного значения. Этот параметр может принимать следующие значения:
none : отсутствие валидации, значение по умолчанию
focus : валидация при получении фокуса
focusin : валидация при изменении фокуса
focusout : валидация при потере фокуса
key : валидация при каждом вводе нового символа
all : валидация при измении фокуса и вводе символов в поле
Параметр validatecommand позволяет установить команду валидации.
Рассмотрим небольшой пример. Допустим, пользовтаель должен ввести номер телефона в формете +xxxxxxxxxxx. То есть сначала должен идти знак +, а затем 11 цифр, например, +12345678901:
Итак, параметр validate=»key» указывает, что мы будем валидировать ввод при каждом нажати на клавиатуру. Параметр validatecommand=check говорит, что валидировать ввод будет команда «check». Эта команда представляет кортеж из двух элементов:
Первый элемент — вызов метода root.register(is_valid) регистрирует функцию, которая собственно будет производить валидацию — это функция is_valid() . Второй элемент — подстановка «%P» представляет новое значение, которое передается в функцию валидации.
Собственно саму валидацию выполняет функция is_valid() . Она принимает один параметр — текущее значение Entry, которое надо валидировать. Она возвращает True, если значение прошло валидацию, и False, если не прошло. Сама логика валидации представляет проверку строки на регулярное выражение «^\+\d*$» . Если новое значение соответствует этому выражению, и в нем не больше 12 символов, то оно прошло валидацию.
В итоге мы сможем ввести в текстовое поле только символ + и затем только 11 цифр.

Теперь немного изменим код и добавим вывод ошибок валидации:
Здесь для вывода ошибок валидации добавлен виджет Label. Если введенное значение не соответствует регулярному выражению (например, пользователь попытался ввести нецифровой символ), и длина ввода меньше и равно 12 символов (проверять ввод больше 12 символов нет смысла, так как номер телефона содержит только 12 символов), то в метке выводим сообщение об ошибке

Также мы можем передать значение параметра validate, чтобы в функции валидации в зависимости от того, нажал пользователь на клавишу или убрал фокус с поля, производить те или иные действия. В этом случае необходимо передать команде валидации дополнительный аргумент:
Здесь значение «%V» представляет событие, которое вызывает валидацию (focus/focusin/focusout/key). Тогда в функции валидации с помощью второго параметра мы сможем получить это значение:
Get contents of a Tkinter Entry widget
I am creating an application and I want to use the entered values in the GUI Entry widget.
How do I get the entered input from a Tkinter Entry widget?
3 Answers 3
You need to do two things: keep a reference to the widget, and then use the get() method to get the string.
Here’s an example:
![]()
First declare a variable of required type. For example an integer:
entry = Entry(root, textvariable=var)
entry.pack()
user_input = var.get()
root.mainloop()
Hope this helps.
![]()
Here’s an example:
-
The Overflow Blog
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.13.43310
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
tkinter
Виджет входа Tkinter
В этих примерах предполагается, что tkinter был импортирован либо import tkinter as tk (python 3), либо import Tkinter as tk (python 2).
Создание виджета Entry и установка значения по умолчанию
Получение значения виджета Entry
Значение виджета ввода можно получить с помощью метода get виджета:
Необязательно, вы можете связать экземпляр StringVar и получить значение из StringVar а не из виджета:
Добавление проверки на виджет ввода
Чтобы ограничить символы, которые можно ввести в виджет ввода, к записи могут быть добавлены только цифры, например, команда проверки. Команда validate — это функция, возвращающая True если изменение принято, иначе False . Эта функция будет вызываться каждый раз, когда содержимое записи будет изменено. К этой функции могут быть переданы различные аргументы, такие как тип изменения (вставка, удаление), вставленный текст, .
Параметр validate определяет тип события, который запускает проверку, здесь это любое нажатие клавиши в записи. '%S' в опции validatecommand означает, что вставленный или удаленный символ передается в аргументе функции only_numbers . Полный список возможностей можно найти здесь .
Получение int From Entry Widget
При использовании метода .get () все, что находится в виджетах записи, будет преобразовано в строку. Например, независимо от типа ввода (это может быть число или предложение), итоговый результат будет строкой. Если пользователь вводит 4, выход будет «4», как в строке. Чтобы получить int из виджета входа, сначала вызовите метод .get ().
Теперь мы преобразуем эту строку в int так:
Аналогичным образом, если вы хотите сэкономить время, вы можете просто сделать:
Вы можете использовать вышеуказанный метод, если вы не хотите преобразовывать str в int.