Виджет ввода Tkinter Entry в Python
Рассмотрим, как использовать виджет Tkinter Entry в Python для создания текстового поля.
- Что такое виджет Tkinter Entry?
- Установка фокуса на виджете Tkinter Entry
- Отображение ввода пароля Tkinter
- Пример виджета Tkinter Entry
Что такое виджет 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()
Выход:
Как это работает.
- Сначала создайте две строковые переменные для хранения текущего текста электронной почты и пароля:
# 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="*")
Наконец, при нажатии кнопки входа отобразите окно сообщения, в котором будут указаны введенный адрес электронной почты и пароль.