Tkinter за 8 минут: GUI на Python — просто и быстро

Разработка на Python не ограничивается веб-сайтами или машинным обучением. Библиотека Tkinter открывает широкие возможности для создания графического интерфейса (GUI) программ. Рассмотрим её возможности и разработаем несколько приложений.

Tkinter и его альтернативы

Tkinter — не единственная библиотека для создания GUI на Python. Существуют более мощные альтернативы, такие как PyQt, Kivy, wxPython и другие. Несмотря на это, Tkinter заслуживает внимания благодаря простоте и функциональности. Это open-source проект, созданный Guido van Rossum, автором языка Python. Tkinter позволяет создавать программы с текстовыми полями, кнопками, картинками и другими элементами.

Начало работы: установка и первый проект

Убедитесь, что Python установлен. Установите также IDE или текстовый редактор (например, PyCharm, VS Code).

Создайте новый проект. Импортируем необходимые классы:

import tkinter as tk

Создадим основной объект окна:

root = tk.Tk()

Переменная root представляет главное окно приложения. Ему можно задать характеристики: фон, название, прозрачность, размеры. Для запрета изменения размеров используйте соответствующие настройки. Для запуска приложения необходим цикл:

root.mainloop()

Этот цикл запускает приложение и отображает окно.

Добавление виджетов: Canvas, Frame, Label, Button

Окно пока пустое, но функционально: его можно перетаскивать и изменять размеры (если не запрещено). Для размещения элементов используем виджеты:

  • Canvas: Подобен холсту для графических примитивов (графиков и т.д.). Не обязателен, но полезен.
  • Frame: Рамка, содержащая другие компоненты. Размещение элементов внутри Frame проще, чем непосредственно в root. Создадим Frame, указав родительское окно (root), цвет фона и размеры (например, 70% ширины и высоты, смещение на 15% по краям):
frame = tk.Frame(root, bg="lightblue", width=int(root.winfo_screenwidth()*0.7), height=int(root.winfo_screenheight()*0.7))
  • Label: Текстовая надпись. Создадим надпись, указав текст, цвет и родительский Frame:
label = tk.Label(frame, text="Привет, мир!", fg="black", bg="lightblue")
  • Button: Кнопка. При создании кнопки указываем функцию, вызываемую при нажатии:
button = tk.Button(frame, text="Нажми меня!", command=some_function)

Для добавления виджетов используем методы pack() или grid(). pack() размещает виджеты автоматически, grid() позволяет управлять их расположением более точно.

frame.pack()
label.pack()
button.pack()

Работа с текстовыми полями и обработка событий

Создадим текстовое поле:

entry = tk.Entry(frame)
entry.pack()

Для поля ввода пароля используйте параметр show:

password_entry = tk.Entry(frame, show="*")

Функция, вызываемая при нажатии кнопки:

def some_function():
    print("Кнопка нажата!")

Получение данных из текстового поля:

data = entry.get()

Вывод информации во всплывающих окнах с помощью messagebox:

tk.messagebox.showinfo("Информация", data)
tk.messagebox.showerror("Ошибка", "Произошла ошибка!")

Пример: проверка погоды

Создадим приложение для получения информации о погоде по API OpenWeatherMap. Код будет упрощен (подробное описание см. по ссылке — ссылка на статью). Создадим два Frame: один для текстового поля и кнопки ввода города, второй для вывода информации. Используем библиотеку requests для работы с API. Получим данные в формате JSON, обработаем их и выведем нужную информацию. В итоге получим функциональное приложение.

Tkinter — простая и удобная библиотека для быстрой разработки GUI-приложений на Python. Для более сложных проектов можно использовать другие, более мощные библиотеки. Выбор зависит от ваших потребностей и времени.

Что будем искать? Например,программа