Первая программа на Tkinter
Первая программа на Tkinter
Tkinter входит в стандартную поставку CPython — отдельная установка не нужна. Сделаем окно «Конвертер °C → °F» с полем ввода, кнопкой и меткой результата.
Теория GUI: Tkinter и GUI. Шпаргалка: Справочник по Tkinter.
Минимальное окно
import tkinter as tk
root = tk.Tk()
root.title("Привет, Tkinter")
root.geometry("320x120")
label = tk.Label(root, text="Окно работает")
label.pack(pady=20)
root.mainloop()
mainloop() запускает цикл обработки событий — без него окно сразу закроется.
Конвертер температуры
import tkinter as tk
from tkinter import messagebox
def convert():
raw = entry.get().strip().replace(",", ".")
try:
celsius = float(raw)
except ValueError:
messagebox.showerror("Ошибка", "Введите число, например 25")
return
fahrenheit = celsius * 9 / 5 + 32
result_var.set(f"{celsius:.1f} °C = {fahrenheit:.1f} °F")
root = tk.Tk()
root.title("Конвертер температуры")
root.resizable(False, False)
frame = tk.Frame(root, padx=16, pady=16)
frame.pack()
tk.Label(frame, text="Температура (°C):").grid(row=0, column=0, sticky="w")
entry = tk.Entry(frame, width=12)
entry.grid(row=0, column=1, padx=(8, 0))
entry.focus_set()
result_var = tk.StringVar(value="—")
tk.Label(frame, textvariable=result_var).grid(row=1, column=0, columnspan=2, pady=(12, 0))
btn_row = tk.Frame(frame)
btn_row.grid(row=2, column=0, columnspan=2, pady=(12, 0))
tk.Button(btn_row, text="Перевести", command=convert).pack(side=tk.LEFT, padx=4)
tk.Button(btn_row, text="Выход", command=root.destroy).pack(side=tk.LEFT, padx=4)
entry.bind("<Return>", lambda _e: convert())
root.mainloop()
pack и grid
pack— укладка «стопкой» или «в ряд» (простые формы).grid— таблица строк и столбцов (формы с выравниванием).
Не смешивайте pack и grid в одном родительском контейнере.
Диалоги и меню (кратко)
from tkinter import filedialog
path = filedialog.askopenfilename(
title="Выберите файл",
filetypes=[("Текст", "*.txt"), ("Все", "*.*")],
)
Меню:
menubar = tk.Menu(root)
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="Выход", command=root.destroy)
menubar.add_cascade(label="Файл", menu=file_menu)
root.config(menu=menubar)
Типичные ошибки
| Симптом | Причина |
|---|---|
| Окно «мигает» и закрывается | Нет mainloop() |
TclError: cannot use geometry manager grid inside ... pack | Смешаны pack и grid |
| Интерфейс «зависает» при долгой операции | Тяжёлую работу выносите в threading или after() |
Куда двигаться дальше
| Цель | Инструмент |
|---|---|
| Богаче UI на Python | PyQt6 / PySide6 — см. Экосистема Python-приложений |
| Веб-UI + Python-бэкенд | Flask/FastAPI + pywebview |
| Кроссплатформенный десктоп на JS | Electron |
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Python как язык общего назначения - философия, ключевые свойства и области применения в современной разработке. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Принципы, которые делают код понятным, поддерживаемым и расширяемым. Примеры реализации типовых приложений. Каждый пример сопровождается разбором ключевых концепций языка. Наверняка каждый новичок, решивший перейти в что-то стандартное в Python, открывает себе этот файл. Как устроен Python, что входит в комплект и какие есть реализации. Структурные каркасы для построения приложений, как они устроены. Фреймворки, библиотеки, инструменты сборки, среды выполнения, системы тестирования и специализированные платформы, объединённые общей философией ясности, простоты и гибкости. Что такое модули, как устроены механизмы импорта и загрузки. Управление изолированной средой и зависимостями проекта. История Python - ключевые этапы развития языка, сообщества и экосистемы инструментов. Философия Python не зафиксирована в официальных стандартах, но она глубоко интегрирована в язык, его стандартную библиотеку, документацию и культуру разработчиков.Python - язык общего назначения
Что требуется знать перед началом изучения языка программирования Python
Рекомендации по разработке на Python
Простые приложения на Python
Встроенный модуль builtins и типизация в Python
Архитектура интерпретатора Python
Фреймворки и библиотеки Python
Экосистема Python-приложений
Модули в Python
Виртуальные окружения и управление зависимостями
История языка Python
Философия Python - Zen of Python