import tkinter as tk
from tkinter import ttk, messagebox

class TemperatureConverterApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Конвертер температур")
        self.root.geometry("400x200")
        self.root.resizable(False, False)

        self.main_frame = ttk.Frame(root, padding=20)
        self.main_frame.pack(fill=tk.BOTH, expand=True)

        self.input_label = ttk.Label(self.main_frame, text="Температура:")
        self.input_label.grid(row=0, column=0, sticky=tk.W, pady=5)

        self.input_entry = ttk.Entry(self.main_frame, width=20)
        self.input_entry.grid(row=0, column=1, sticky=tk.W, pady=5)

        self.from_var = tk.StringVar(value="celsius")
        self.from_label = ttk.Label(self.main_frame, text="Из:")
        self.from_label.grid(row=1, column=0, sticky=tk.W, pady=5)
        self.from_combo = ttk.Combobox(self.main_frame, textvariable=self.from_var, state="readonly", width=17)
        self.from_combo['values'] = ("celsius", "fahrenheit")
        self.from_combo.grid(row=1, column=1, sticky=tk.W, pady=5)

        self.to_var = tk.StringVar(value="fahrenheit")
        self.to_label = ttk.Label(self.main_frame, text="В:")
        self.to_label.grid(row=2, column=0, sticky=tk.W, pady=5)
        self.to_combo = ttk.Combobox(self.main_frame, textvariable=self.to_var, state="readonly", width=17)
        self.to_combo['values'] = ("celsius", "fahrenheit")
        self.to_combo.grid(row=2, column=1, sticky=tk.W, pady=5)

        self.convert_button = ttk.Button(self.main_frame, text="Конвертировать", command=self.convert)
        self.convert_button.grid(row=3, column=0, columnspan=2, pady=10)

        self.result_label = ttk.Label(self.main_frame, text="Результат: ")
        self.result_label.grid(row=4, column=0, columnspan=2, sticky=tk.W)

    def convert(self):
        input_text = self.input_entry.get().strip()
        if not input_text:
            messagebox.showerror("Ошибка", "Введите температуру.")
            return

        try:
            value = float(input_text)
        except ValueError:
            messagebox.showerror("Ошибка", "Некорректное число.")
            return

        from_unit = self.from_var.get()
        to_unit = self.to_var.get()

        if from_unit == to_unit:
            result = value
        elif from_unit == "celsius" and to_unit == "fahrenheit":
            result = value * 9 / 5 + 32
        elif from_unit == "fahrenheit" and to_unit == "celsius":
            result = (value - 32) * 5 / 9
        else:
            messagebox.showerror("Ошибка", "Неподдерживаемая комбинация единиц.")
            return

        self.result_label.config(text=f"Результат: {result:.2f}")

def main():
    root = tk.Tk()
    app = TemperatureConverterApp(root)
    root.mainloop()

if __name__ == "__main__":
    main()