Автор оригинала: Pankaj Kumar.
Еще раз здравствуйте! Это еще один пост в нашей серии учебников по Tkinter, и сегодня мы рассмотрим виджет ввода Tkinter.
В прошлый раз мы рассмотрели концепцию окна холста Tkinter . На этот раз мы сделаем что-то другое.
Сегодняшнее сообщение находится в виджете Tkinter Entry . Любой виджет является частью основного приложения. Виджет ввода очень полезен, если вы хотите получить ввод от пользователя.
Мы можем создать виджет ввода в нашем главном приложении, а также добавить текстовые поля ввода для нашего приложения, чтобы пользователь мог что-то ввести в нем.
Давайте начнем!
Виджет ввода Tkinter
Этот виджет позволяет нам вводить одну строку текста.
Если мы введем строку, которая превышает длину виджета, мы должны прокрутить вниз для следующей части.
Это полезно, если вы хотите получить пользовательский ввод для небольших полей, таких как имя и номер телефона.
Давайте теперь посмотрим, как мы можем использовать это в нашем приложении.
Синтаксис виджета ввода
Чтобы объявить виджет записи, мы можем использовать следующий тип синтаксиса:
entry_object = tk.Entry(master, option, ... )
При этом используется дескриптор master
объекта для нашего родительского окна. Это укажет, где мы можем разместить объект ввода.
Мы можем предоставить определенные параметры, используя параметр option
, например, какую строку и столбец вы хотите разместить.
Шаг 1: Создайте ярлыки для нашего приложения
Но перед этим давайте создадим виджет Label
для нашего приложения. Мы можем использовать это, чтобы назвать блок текста.
ПРИМЕЧАНИЕ : Мы не можем использовать холст вместе с другими виджетами, такими как метка, так как мы используем canvas.pack()
. Они предназначены для совершенно разных целей.
Хотя мы не можем использовать Canvas
, давайте повторим аналогичный шаблон для нашего приложения из предыдущего урока.
import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): # We need the master object to # initialize important stuff super().__init__(master) # Call tk.Frame.__init__(master) self.master = master # Update the master object after tk.Frame() makes necessary changes to it # Create our master object to the Application master = tk.Tk() # Create our application object app = Application(master=master) # Start the mainloop app.mainloop()
Чтобы создать виджет Label
, используйте следующий синтаксис:
tk.Label(master, text).grid(row)
Это вставит его в строку
номер основной сетки приложения со строкой text
!
Давайте теперь напишем его для нашего класса. Мы напишем функцию под названием create Grid Label
, которая сделает это за нас.
def createGridLabel(self, text, row_number): # Create a label with the text, on the row number tk.Label(self.master, text=text).grid(row=row_number)
Теперь давайте рассмотрим всю программу.
import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): # We need the master object to # initialize important stuff super().__init__(master) # Call tk.Frame.__init__(master) self.master = master # Update the master object after tk.Frame() makes necessary changes to it def createGridLabel(self, text, row_number): # Create a label with the text, on the row number tk.Label(self.master, text=text).grid(row=row_number) # Create our master object to the Application master = tk.Tk() # Create our application object app = Application(master=master) # Create a label with the following text, on row #0 app.createGridLabel("Name", 0) app.createGridLabel("Phone Number", 1) # Start the mainloop app.mainloop()
Выход
Хотя изображение очень маленькое, метки действительно находятся на экране! Теперь перейдем к фактическим виджетам Entry
для этих меток.
Мы можем создавать наши объекты ввода с помощью tk.Запись(мастер)
# Create the entry objects e1 = tk.Entry(master) e2 = tk.Entry(master)
Теперь давайте разместим записи в нужных местах. Первая запись принадлежит строке 0 и столбцу 1 (так как столбец 0 имеет нашу метку Имя
), в то время как виджет второй записи находится в (1, 1).
# Place it in it's suitable position e1.grid(row=0, column=1) e2.grid(row=1, column=1)
Давайте теперь посмотрим на полный код.
import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): # We need the master object to # initialize important stuff super().__init__(master) # Call tk.Frame.__init__(master) self.master = master # Update the master object after tk.Frame() makes necessary changes to it def createGridLabel(self, text, row_number): # Create a label with the text, on the row number tk.Label(self.master, text=text).grid(row=row_number) # Create our master object to the Application master = tk.Tk() # Create our application object app = Application(master=master) # Create a label with the following text, on row #0 app.createGridLabel("Name", 0) app.createGridLabel("Phone Number", 1) # Create the entry objects e1 = tk.Entry(master) e2 = tk.Entry(master) # Place it in it's suitable position e1.grid(row=0, column=1) e2.grid(row=1, column=1) # Start the mainloop app.mainloop()
Выход
Как вы можете видеть, он не только отображает текстовое поле, но я также могу печатать на нем!
Что делать, если вы хотите разместить некоторые значения заполнителей по умолчанию для этих полей? Ну, это очень просто, и требуется только одна строка кода для каждой записи!
Мы можем использовать entry.insert(0, text)
, где text
– требуемое значение для текстового поля.
Давайте поставим Спросите Python
и 12345678
теперь в этих двух полях в качестве значений по умолчанию.
e1.insert(0, "AskPython") e2.insert(0, "12345678") # Must be a string, not an integer
Выход
Надеюсь, это сработает и для вас. Мы успешно добавили значения по умолчанию в наше приложение!
Вывод
В этом уроке мы узнали, как использовать виджет ввода с помощью Tkinter.
Оставайтесь с нами для получения дополнительной информации о Tkinter!