Глава 16 · Создаём классные приложения с Tkinter
Мини-проект — приложение-калькулятор чаевых
Первое полноценное приложение книги — с полями ввода, кнопкой и результатом на экране.
Соберём всё изученное в главе в одном настоящем приложении: калькулятор чаевых с полем ввода, кнопкой и меткой результата.
kalkulyator_chaevyh.py
import tkinter as tk
root = tk.Tk()
root.title("Калькулятор чаевых")
tk.Label(root, text="Сумма счёта:").grid(row=0, column=0, padx=10, pady=10)
schet_entry = tk.Entry(root)
schet_entry.grid(row=0, column=1)
tk.Label(root, text="Процент чаевых:").grid(row=1, column=0, padx=10, pady=10)
procent_entry = tk.Entry(root)
procent_entry.grid(row=1, column=1)
rezultat_label = tk.Label(root, text="", font=("Arial", 14, "bold"))
rezultat_label.grid(row=3, column=0, columnspan=2, pady=10)
def poschitat():
schet = float(schet_entry.get())
procent = float(procent_entry.get())
chaevye = schet * procent / 100
rezultat_label.config(text=f"Чаевые: {chaevye:.2f}")
tk.Button(root, text="Посчитать", command=poschitat).grid(row=2, column=0, columnspan=2)
root.mainloop()
Какие темы здесь встретились
grid() — этот раздел; float() — глава 4; форматирование :.2f — глава 8; сама формула чаевых — глава 12, проект 12-2.★★★ Задача повышенной сложности
Проверка ввода
Оберните вычисление в try/except (забегая немного вперёд — подробно об этом в главе 21) — чтобы приложение не падало, если пользователь введёт не число, а текст.
Итоги
Что мы узнали в этой главе
tk.Tk()создаёт главное окно;mainloop()запускает цикл обработки событий.- Основные виджеты:
Label,Button,Entry,Text,Radiobutton,Checkbutton. command=функциясвязывает кнопку с действием — без скобок после имени функции.pack()иgrid()— два способа размещения виджетов; не смешивать их в одном контейнере.- Специальные переменные Tkinter (
StringVarи другие) автоматически обновляют связанные с ними виджеты.