Учебник по Tkinter в Python – руководство и примеры
Python предоставляет стандартную библиотеку Tkinter для создания графического пользовательского интерфейса для настольных приложений.
Разработка настольных приложений с помощью python Tkinter – не сложная задача. Пустое окно верхнего уровня Tkinter можно создать, выполнив следующие действия:
- Импортировать модуль Tkinter.
- Создайте главное окно приложения.
- Добавьте в окно виджеты, такие как метки, кнопки, рамки и т. д.
- Вызовите основной цикл событий, чтобы действия могли отображаться на экране компьютера пользователя.
# !/usr/bin/python3 from tkinter import * #creating the application main window. top = Tk() #Entering the event main loop top.mainloop()
Виджеты
Существуют различные виджеты, такие как button, canvas, checkbutton, entry и т. д., которые используются для создания приложений с графическим интерфейсом пользователя Python.
№ | Виджет | Описание |
---|---|---|
1 | Button | Виджет кнопки используется для добавления различных типов кнопок в приложение Python. |
2 | Canvas | Этот виджет используется для рисования на холсте в окне. |
3 | Checkbutton | Используется для отображения кнопки-флажка в окне. |
4 | Entry | Виджет ввода используется для отображения однострочного текстового поля. Обычно он используется для принятия пользовательских значений. |
5 | Frame | Этот виджет можно определить как контейнер, в который можно добавить и организовать другой виджет. |
6 | Label | Метка – это текст, используемый для отображения некоторого сообщения или информации о других виджетах. |
7 | ListBox | Виджет ListBox используется для отображения пользователю списка параметров. |
8 | Menubutton | Menubutton используется для отображения пунктов меню пользователю. |
9 | Menu | Он используется для добавления пользователю пунктов меню. |
10 | Message | Виджет сообщения используется для отображения окна сообщения пользователю. |
11 | Radiobutton | Радиокнопка отличается от кнопки-флажка. Здесь пользователю предоставляются различные варианты, и пользователь может выбрать среди них только один вариант. |
12 | Scale | Используется для предоставления пользователю ползунка. |
13 | Scrollbar | Он предоставляет пользователю полосу прокрутки, чтобы пользователь мог прокручивать окно вверх и вниз. |
14 | Text | Он отличается от Entry, поскольку предоставляет пользователю многострочное текстовое поле, чтобы пользователь мог писать текст и редактировать текст внутри него. |
15 | Toplevel | Используется для создания отдельного оконного контейнера. |
16 | Spinbox | Это виджет ввода, используемый для выбора вариантов значений. |
17 | PanedWindow | Похож на виджет-контейнер, который содержит горизонтальные или вертикальные панели. |
18 | LabelFrame | LabelFrame – это виджет, который действует как контейнер. |
19 | MessageBox | Этот модуль используется для отображения окна сообщения в настольных приложениях. |
Геометрия
Геометрия Tkinter определяет метод, с помощью которого виджеты отображаются на дисплее. Python Tkinter предоставляет следующие геометрические методы.
Давайте подробно обсудим каждый из них.
Метод Python Tkinter pack()
Метод pack() используется для организации виджета в блоке. Виджетами позиций, добавленными в приложение Python с помощью метода pack(), можно управлять с помощью различных параметров, указанных в вызове метода.
Однако элементов управления меньше, а виджеты обычно добавляются менее организованно.
Синтаксис использования pack() приведен ниже:
Список возможных параметров, которые можно передать в pack(), приведен ниже.
- expand: если для параметра «expand» задано значение «истина», виджет расширяется, заполняя любое пространство.
- Fill: по умолчанию для заливки установлено значение NONE. Однако мы можем установить для него значение X или Y, чтобы определить, есть ли в виджете лишнее пространство.
- size: представляет сторону родительского элемента, с которой виджет должен быть размещен в окне.
# !/usr/bin/python3 from tkinter import * parent = Tk() redbutton = Button(parent, text = "Red", fg = "red") redbutton.pack( side = LEFT) greenbutton = Button(parent, text = "Black", fg = "black") greenbutton.pack( side = RIGHT ) bluebutton = Button(parent, text = "Blue", fg = "blue") bluebutton.pack( side = TOP ) blackbutton = Button(parent, text = "Green", fg = "red") blackbutton.pack( side = BOTTOM) parent.mainloop()
Метод Python Tkinter grid()
Менеджер геометрии grid() организует виджеты в табличной форме. Мы можем указать строки и столбцы в качестве параметров при вызове метода. Мы также можем указать диапазон столбцов (ширину) или диапазон строк (высоту) виджета.
Это более организованный способ размещения виджетов в приложении Python. Синтаксис использования grid() приведен ниже:
Список возможных параметров, которые можно передать внутри метода grid():
- Column
Номер столбца, в который будет помещен виджет. Крайний левый столбец представлен 0. - Columnspan
Ширина виджета. Он представляет количество столбцов, до которых столбец расширяется. - ipadx, ipadyПредставляет количество пикселей для заполнения виджета внутри границы.
- padx, pady
Представляет количество пикселей для размещения виджета за пределами его границы. - row
Номер строки, в которую должен быть помещен виджет. Самая верхняя строка представлена 0. - rowspan
Высота виджета, то есть номер строки, до которой расширяется виджет. - Sticky
Если ячейка больше, чем виджет, то используется Sticky, чтобы указать положение виджета внутри ячейки. Это может быть соединение букв, представляющих позицию виджета. Это может быть N, E, W, S, NE, NW, NS, EW, ES.
# !/usr/bin/python3 from tkinter import * parent = Tk() name = Label(parent,text = "Name").grid(row = 0, column = 0) e1 = Entry(parent).grid(row = 0, column = 1) password = Label(parent,text = "Password").grid(row = 1, column = 0) e2 = Entry(parent).grid(row = 1, column = 1) submit = Button(parent, text = "Submit").grid(row = 4, column = 0) parent.mainloop()
Метод Python Tkinter place()
Менеджер place() упорядочивает виджеты по определенным координатам x и y.
Список возможных вариантов приведен ниже:
- Anchor: он представляет собой точное положение виджета в контейнере. Значение по умолчанию (direction) – NW (левый верхний угол).
- bordermode: значение по умолчанию для типа границы – INSIDE, что означает игнорирование родительского элемента внутри границы. Другой вариант – OUTSIDE.
- height, width: это высота и ширина в пикселях.
- relheight, relwidth: представлен как число с плавающей запятой между 0,0 и 1,0, указывающее долю высоты и ширины родительского элемента.
- relx, rely: представлен в виде числа с плавающей запятой между 0,0 и 1,0, которое представляет собой смещение в горизонтальном и вертикальном направлениях.
- x, y: это относится к горизонтальному и вертикальному смещению в пикселях.
# !/usr/bin/python3 from tkinter import * top = Tk() top.geometry("400x250") name = Label(top, text = "Name").place(x = 30,y = 50) email = Label(top, text = "Email").place(x = 30, y = 90) password = Label(top, text = "Password").place(x = 30, y = 130) e1 = Entry(top).place(x = 80, y = 50) e2 = Entry(top).place(x = 80, y = 90) e3 = Entry(top).place(x = 95, y = 130) top.mainloop()
Прежде чем изучать Tkinter, вы должны иметь базовые знания Python. Наше руководство по Python Tkinter разработано, чтобы помочь новичкам и профессионалам.