Как очистить поле entry в tkinter

от admin

How to clear the Entry widget after a button is pressed in Tkinter?

Tkinter Entry widgets are used to display a single line text that is generally taken in the form of user Input. We can clear the content of Entry widget by defining a method delete(0, END) which aims to clear all the content in the range. The method can be invoked by defining a function which can be used by creating a Button Object.

Example

In this example, we have created an entry widget and a button that can be used to clear all the content from the widget.

Output

Running the above code will display a window that contains an entry widget and a Button which can be used to clear the text written in the entry field.

# Entry — Однострочное текстовое поле

Элемент Entry представляет поле для ввода текста. Конструктор Entry принимает следующие параметры:

где master — ссылка на родительское окно, а options — набор следующих параметров:

  • bg: фоновый цвет
  • bd: толщина границы
  • cursor: курсор указателя мыши при наведении на текстовое поле
  • fg: цвет текста
  • font: шрифт текста
  • justify: устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER — по центру, RIGHT — по правому краю
  • relief: определяет тип границы, по умолчанию значение FLAT
  • selectbackground: фоновый цвет выделенного куска текста
  • selectforeground: цвет выделенного текста
  • show: задает маску для вводимых символов
  • state: состояние элемента, может принимать значения NORMAL (по умолчанию) и DISABLED
  • textvariable: устанавливает привязку к элементу StringVar
  • width: ширина элемента

Для работы с текстом, находящимся в текстовом поле, необходимо создать переменную в которой будут храниться значения, которые будут выводиться или считываться в текстовом поле. Общий вид программы зададим следующий:

Здесь команда message.set(«Any») — устанавливает значение переменной равное строке «Any». И параметру textvariable присваивается значение переменной message.

Исследуйте переменную message добавив недостающий следующий код:

Подумайте над последовательностью и работой команд message.set() и message.get() . Что происходит при выполнении каждой из команд?

Определим элемент Entry и по нажатию на кнопку выведем его текст в отдельное окно с сообщением:

Для вывода сообщения здесь применяется дополнительный модуль messagebox, содержащий функцию showinfo() , которая собственно и выводит введенный в текстовое поле текст. Для получения введенного текста используется StringVar .

Теперь создадим более сложный пример с формой ввода:

# Методы Entry

Методы для виджетов — это встроенные функции, которые позволяют менять объект или получать информацию о нем.

Виджет Entry имеет ряд методов. Основные из них:

  • insert(index, str) : вставляет в текстовое поле строку по определенному индексу;
  • get() : возвращает введенный в текстовое поле текст;
  • delete(first, last=None) : удаляет символ по индексу first . Если указан параметр last , то удаление производится до индекса last . Чтобы удалить до конца, в качестве второго параметра можно использовать значение END .

Используем методы в программе:

При запуске программы в оба текстовых поля добавляется текст по умолчанию:

Кнопка Clear очищает оба поля, вызывая метод .delete() :

Вторая кнопка, используя метод .get() , получает введенный текст:

Как видно из примера, нам необязательно обращаться к тексту в Entry() через переменные типа StringVar() , можно это сделать напрямую через метод .get() .

# Упражнения

Создайте окно с текстовым полем Entry , и задайте значение текстового поля: «Текстовое поле вводит и выводит текст только одной строкой», используя метод .insert() .

Используя переменную StringVar() . Создайте окно с текстовым полем и двумя кнопками:

  • кнопкой "Paste", при нажатии на которую, в текстовом поле выводится текст: "The button clicked!".
  • кнопкой "Clear", при нажатии на которую, текст в текстовом поле стирается.

Используя методы .insert() и .delete() для текстового поля. Создайте окно с текстовым полем и двумя кнопками:

  • кнопкой "Paste", при нажатии на которую, в текстовом поле выводится текст: "The button clicked!".
  • кнопкой "Clear", при нажатии на которую, текст в текстовом поле стирается.

Используя переменную StringVar() . Создайте окно с текстовым полем и кнопкой "Copy", при нажатии на которую, выводится значение текстового поля в консоль.

Вывод в консоль после нажатия кнопки "Copy":

Используя команды .get() для виджета текстового поля. Создайте окно с текстовым полем и кнопкой "Copy", при нажатии на которую, выводится значение текстового поля в консоль.

Создайте программу с двумя текстовыми полями и двумя кнопками.

  • при нажати на первую кнопку, должны выводиться значения первого и второго полей в консоль:
  • при нажатии на вторую кнопку, должны выводиться значения первого и второго полей в консоль с пояснениями в виде:

Создайте окно с двумя однострочными текстовыми полями и кнопкой, при нажатии на которую, значение первого текстового поля будет выводиться во втором текстовом поле.

Создайте окно с двумя однострочными текстовыми полями и кнопкой, при нажатии на которую, значение первого текстового поля будет выводиться во втором текстовом поле, с примечанием: «<текст первого теля>», — it is the first entry's contents .

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

Как очистить поле 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 в tkinter в Python

Вставка и удаление текста

Рассмотрим вставку и удаление текста в Entry:

При запуске программы в текстовое поле сразу же добавляется текст по умолчанию:

Кнопка Clear очищает оба поля, вызывая метод delete:

Вторая кнопка, используя метод get, получает введенный текст:

Валидация

С помощью параметра validate конструктора Entry можно задать, когда проводить валидацию введенного значения. Этот параметр может принимать следующие значения:

Читать:
Как сделать фото 3 на 4 на компьютере

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 цифр.

Валидация ввода в entry на tkinter в Python

Теперь немного изменим код и добавим вывод ошибок валидации:

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

Валидация ввода в entry и вывод сообщения об ошибке в tkinter в Python

Также мы можем передать значение параметра validate, чтобы в функции валидации в зависимости от того, нажал пользователь на клавишу или убрал фокус с поля, производить те или иные действия. В этом случае необходимо передать команде валидации дополнительный аргумент:

Здесь значение «%V» представляет событие, которое вызывает валидацию (focus/focusin/focusout/key). Тогда в функции валидации с помощью второго параметра мы сможем получить это значение:

Python tkinter Entry

User input for single line of text. ( for multi line of text use Text) parent_window : Declared Parent window
options : Various options can be added, list is given below.
Entry for text input

Options

bg Color of the background. We can use Hex value or colour name. ( bg=’green’ or bg=’#ffff00′)

bd Border size, default value is 2

cursor Shape of the cursor while moving over the Entry widget. A list of shapes are available at Button Page.

font font style ,size used. Check the example below

fg font colour. Check the example below

justify Alignment of text. Values are ‘left’,’center’ or ‘right’

relief The borders 3 D effect style. It can take these values ‘raised’ , ‘sunken’ ,’flat’, ‘ridge’, ‘solid’ & ‘groove’

selectbackground Colour of the background when text is selected

selectforeground Colour of the font when text is selected

selectborderwidth Size of the border around the selection, default value is 0

show The entries can be masked, used when entering passwords. Check the example below.

state Values can be ‘disabled’, ‘normal’,’readonly’. Check the example below.

textvariable variable associated with the Entry. Used for setting or reading the user entered data. Usually StringVar is used.

width width of the widget, default value is 20
xscrollcommand Connecting Entry widget to a scrollbar

Reading data of Entry box and entering data

To Delete text of Entry box

Using a Reset button

Resetting all Entry boxes

Irrespective of number of Entry boxes we used in our application, we can remove all user entered data by using winfo_children() which returns all the widget classes of the Tkinter window. Here is the code How Reset button is used to delete all user enterd data and selections →

Default text in Entry widget

We can keep any default text or data from any other input system inside an Entry box. For this we will use one StringVar().

We can bind the StringVar() e1_str to our Entry box e1. Now we are adding one default text Welcome to the Entry text. Using the above methods we will create one application where on Click of a button the data entered by the user in Entry box is displayed and default text is changed to Welcome.
getting & setting data from EntryHere on Click of the button the function my_upd() is executed. Inside this function we will first read the text entered by user and assign the same to another Label ( l2 ) .

In next line we will assign the string ‘Welcome’ to the StringVar() binded to Entry box ( e1 ). We can change or manage different options by using config. One example is here . Similarly other properties can be updated. One similar list is available with Text entry.

Disable or Enable Entry widget

Password entry text

validate=’key’

validatecommand

Formatting Input

Listing all options

select_range(0,’end’)

Uses of Entry box

Uses of Entry box
In practice we will frequently come across requirement of Entry text box. Most common requirements are listed here.

How to read the entered text.
How to delete the entered text.
How to configure the font colour and background colour of the text entry box.

We will create two Entry boxes. The first entry box e1 we will use to enter the data. On click of the Update button data from first entry box e1 will transfer to second entry box e2. One more button we will use to delete all data from second entry box e2.

By using two buttons we can change the font colour of second entry box e2 to green or red. Similarly by using two more buttons we can change the background colour of second entry box e2.

Select all text on Focus of Entry widget

Display data from Database table in Entry widget

Displaying Data from MySQL database table in Entry widget

First connect to database and execute the query to get data. Create a Tkinter window with Entry widget and display the data by assigning value option of StringVar.

Похожие статьи