Загрузка данных


import tkinter as tk
from tkinter import ttk
from tkinter import messagebox

def convert():
    direction = combo_direction.get()
    input_value = entry_temp.get().strip()
    
    # Отдельная функция для самих вычислений (согласно условию)
    def calculate(val, mode):
        if mode == "Цельсий -> Фаренгейт":
            return val * 9 / 5 + 32
        elif mode == "Фаренгейт -> Цельсий":
            return (val - 32) * 5 / 9

    try:
        # Проверка на пустой ввод или некорректные символы
        if not input_value:
            raise ValueError("Поле ввода пустое.")
        
        # Заменяем запятую на точку для поддержки дробных чисел
        temp_float = float(input_value.replace(",", "."))
        
        # Вычисление и округление
        result = calculate(temp_float, direction)
        label_result.config(text=f"Результат: {round(result, 1)}")
        
    except ValueError:
        messagebox.showerror("Ошибка ввода", "Пожалуйста, введите корректное число (буквы и спецсимволы недопустимы).")

# Создание окна
root = tk.Tk()
root.title("Конвертер температур")
root.geometry("400x250")

# Выпадающий список вариантов перевода
combo_direction = ttk.Combobox(root, values=["Цельсий -> Фаренгейт", "Фаренгейт -> Цельсий"], font=("Arial", 10), state="readonly")
combo_direction.current(0)
combo_direction.pack(pady=10)

# Поле ввода температуры
entry_temp = tk.Entry(root, font=("Arial", 12), width=15)
entry_temp.pack(pady=5)

# Кнопка «Перевести»
btn_convert = tk.Button(root, text="Перевести", font=("Arial", 10), command=convert)
btn_convert.pack(pady=10)

# Надпись для вывода результата
label_result = tk.Label(root, text="Результат: ", font=("Arial", 12, "bold"))
label_result.pack(pady=15)

root.mainloop()