Языки программирования

Библиотека Tkinter в Python

Tkinter – это пакет для Python, предназначенный для работы с библиотекой Tk. Библиотека Tk содержит компоненты графического интерфейса пользователя (graphical user interface – GUI), написанные на языке программирования Tcl.
Под графическим интерфейсом пользователя (GUI) подразумеваются все те окна, кнопки, текстовые поля для ввода, скроллеры, списки, радиокнопки, флажки и др., которые вы видите на экране, открывая то или иное приложение. Через них вы взаимодействуете с программой и управляете ею.
Все эти элементы интерфейса вместе называют виджетами (widgets). В Python мы можем создать виджеты с помощью библиотеки tkinter. Этапы разработки интерфейса с GUI следующие:
  1. Импорт библиотеки;
  2. Создание главного окна;
  3. Создание виджетов;
  4. Установка их свойств;
  5. Определение событий;
  6. Определение обработчиков событий;
  7. Расположение виджетов на главном окне;
  8. Отображение главного окна.

Подключение библиотеки

Как и любой модуль, tkinter в Python можно импортировать двумя способами: командами import tkinter или from tkinter import * (имя модуля пишется со строчной буквы).
Рекомендуется использовать второй способ, т.к. это позволит не указывать каждый раз имя модуля при обращении к объектам, которые в нем содержаться. Пример:
from tkinter import *

Создание главного окна

Объект окна верхнего уровня создается при обращении к классу Tk модуля tkinter. Переменную, связанную с объектом-окном принято называть root (но можно назвать и другим именем). Рассмотрим пример создания главного окна:
from tkinter import *

root = Tk() # создаем переменную
root.title("Заголовок окна программы") #заголовок окна
root.geometry("400x200") # начальные размеры окна

input()
При запуске будет выведено:
Если не установить геометрию окна, то размер окна будет подогнан под размер виджетов, содержащихся в окне.

Работа с виджетами

В библиотеки tkinter существует множества виджетов. Для примера рассмотрим виджет «Button».
У класса Button есть обязательный параметр — объект, которому кнопка принадлежит (у нас это окно root). Полный список виджетов мы рассмотрим в следующих статьях. Пример создания кнопки:
but1 = Button(root)
У кнопки есть много свойств: надпись, цвет фона, размер и т.д. Например, добавим текст нашей кнопке:
but1["text"] = "Название кнопки"
Чтобы наша кнопка появилась в окне программы необходимо использовать метод pack(). Добавим в наше окно кнопку:
from tkinter import *

root = Tk()
root.title("Заголовок окна программы")
root.geometry("400x200")
but1 = Button(root)
but1["text"] = "Название кнопки"
but1.pack()
input()
Если вы заметили, то при нажатии на кнопку ничего не происходит т.к. у нас нету события. Действия(алгоритм) часто оформляют в виде функции, а затем вызывают необходимым событием. Создадим функцию:
def hello(event):
  print("Привет, программист!")
Параметр event — это какое-либо событие. Событие нажатия левой кнопки мыши выглядит так: <Button-1>. Требуется связать это событие с обработчиком (функцией hello). Для связи предназначен метод bind. Синтаксис:
but1.bind("<Button-1>",hello)
Для закрепления теоретического материала соберем все наши примеры в одну программу. Листинг:
from tkinter import *

def hello(event):
  print("Привет, программист!")

root = Tk()
root.title("Заголовок окна программы")
root.geometry("400x200")
but1 = Button(root)
but1["text"] = "Название кнопки"
but1.bind("<Button-1>",hello)

but1.pack()
root.mainloop()
input()
Если запустить данную программу и нажать на кнопку, то в консоли появится строчка «Привет, программист!».

Строчка root.mainloop() должна быть всегда в конце скрипта. Окно не появится, пока мы не вызовим метод mainloop().

Вывод программы:
Знакомство с Tkinter:
Библиотека Tkinter