Глава 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 · формулы и симуляция ввода пользователя
Открыть ноутбук →