Глава 23 · Ещё больше мини-проектов
Проект 23-5: Преобразование температуры
Одна функция перевода в Цельсий — и все шесть направлений пересчёта готовы.
Проект 23-5: Приложение для преобразования температуры
Небольшое, но по-настоящему полезное приложение: вводим температуру, выбираем
единицу через переключатели (Radiobutton) и сразу видим
значение во всех трёх шкалах:
preobrazovanie.py
def celsij_v_farengejt(c):
return c * 9 / 5 + 32
def celsij_v_kelvin(c):
return c + 273.15
def preobrazovat(znachenie, iz_edinicy):
if iz_edinicy == "C":
c = znachenie
elif iz_edinicy == "F":
c = farengejt_v_celsij(znachenie)
else:
c = kelvin_v_celsij(znachenie)
return {
"C": c,
"F": celsij_v_farengejt(c),
"K": celsij_v_kelvin(c),
}
Всегда переводим через Цельсий
Вместо шести отдельных формул (C→F, C→K, F→C, F→K, K→C, K→F) достаточно уметь переводить в Цельсий и из Цельсия — остальные пять переводов получаются сами собой через промежуточный шаг.
Переключатели Radiobutton
radiobutton.py
edinica = tk.StringVar(value="C")
for kod, podpis in [("C", "Цельсий"), ("F", "Фаренгейт"), ("K", "Кельвин")]:
tk.Radiobutton(root, text=podpis, variable=edinica, value=kod).grid(...)
Radiobutton — «выбери один из нескольких»
Все переключатели с одинаковой
variable=edinica работают как группа — можно выбрать только один одновременно, а edinica.get() всегда возвращает значение выбранного.Полный код: 📄 projects/tkinter/temperature-converter/temperature_converter.py
Практика в Jupyter Notebook
23-05-temperatura.ipynb · формулы и симуляция ввода пользователя