Виджет ввода Tkinter Entry в Python

Рассмотрим, как использовать виджет Tkinter Entry в Python для создания текстового поля.

Содержание

Что такое виджет Tkinter Entry?

Виджет Entry позволяет вводить однострочный текст. В Tkinter именно он используется для создания текстового поля:

textbox = ttk.Entry(master, **options)

В этом синтаксисе:

  • master — это родительский фрейм или окно, на котором вы хотите разместить виджет.
  • options — это один или несколько ключевых аргументов, используемых для настройки виджета «Ввод».

Обратите внимание: если вы хотите ввести многострочный текст, вы можете использовать виджет «Text».

Чтобы получить текущий текст виджета Entry в виде строки, используйте метод get():

textbox.get()

Обычно текущее значение текстового поля связывается с объектом StringVar следующим образом:

text = tk.StringVar()
textbox = ttk.Entry(root, textvariable=text)

В этом синтаксисе:

  • Сначала создадим новый экземпляр класса StringVar. Текст будет держателем значения для строковой переменной.
  • Затем назначим текстовую переменную textvariable виджета «Entry».

В этом случае вы можете использовать вызов метода get() объекта StringVar(), чтобы получить текущее значение виджета Entry:

text.get()

Установка фокуса на виджете Tkinter Entry

Чтобы обеспечить лучший пользовательский опыт, вы можете переместить фокус на первый виджет Entry после появления окна. Как только виджет Entry получает фокус, он готов принять пользовательский ввод.

Для этого используйте метод focus() виджета Entry следующим образом:

textbox.focus()

Отображение ввода пароля Tkinter

Чтобы скрыть конфиденциальную информацию в виджете «Entry», например пароль, вы можете использовать опцию «show».

Следующий код создает запись пароля. Когда вы вводите пароль, он не показывает реальные символы, а показывает звездочки(*), указанные в параметре show:

password = tk.StringVar()
password_entry = ttk.Entry(
    root,
    textvariable=password,
    show='*'
)
password_entry.pack()

Пример виджета Tkinter Entry

Следующая программа показывает, как использовать виджеты Entry для создания формы Entry:

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo

# root window
root = tk.Tk()
root.geometry("300x150")
root.resizable(False, False)
root.title('Sign In')

# store email address and password
email = tk.StringVar()
password = tk.StringVar()


def login_clicked():
    """ callback when the login button clicked
    """
    msg = f'You entered email: {email.get()} and password: {password.get()}'
    showinfo(
        title='Information',
        message=msg
    )


# Sign in frame
signin = ttk.Frame(root)
signin.pack(padx=10, pady=10, fill='x', expand=True)


# email
email_label = ttk.Label(signin, text="Email Address:")
email_label.pack(fill='x', expand=True)

email_entry = ttk.Entry(signin, textvariable=email)
email_entry.pack(fill='x', expand=True)
email_entry.focus()

# password
password_label = ttk.Label(signin, text="Password:")
password_label.pack(fill='x', expand=True)

password_entry = ttk.Entry(signin, textvariable=password, show="*")
password_entry.pack(fill='x', expand=True)

# login button
login_button = ttk.Button(signin, text="Login", command=login_clicked)
login_button.pack(fill='x', expand=True, pady=10)


root.mainloop()

Выход:

Как использовать виджет Entry для создания формы

Как это работает.

  • Сначала создайте две строковые переменные для хранения текущего текста  электронной почты и пароля:
# store email address and password
email = tk.StringVar()
password = tk.StringVar()
  • Во-вторых, создайте адрес электронной почты» и свяжите его с переменной email виджета Entry:
email_entry = ttk.Entry(signin, textvariable=email)

Следующие наборы фокусируются на записи электронной почты:

email_entry.focus()
  • В-третьих, создайте виджет ввода пароля и назначьте переменную пароля textvariable:
password_entry = ttk.Entry(signin, textvariable=password, show="*")

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

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *