Рубрики
Без рубрики

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

Еще раз здравствуйте! Это еще один пост в нашей серии учебников по Tkinter, и сегодня мы рассмотрим виджет ввода Tkinter.

Автор оригинала: 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!