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


import tkinter
from tkinter import Tk, Frame, Label, Entry, Button, messagebox

# 2. Функция расчета объема газа
def calculate_volume():
    try:
        # Считываем данные из полей
        m = float(en_m.get())        # масса (г)
        M = float(en_M_mol.get())    # молярная масса (г/моль)
        P = float(en_P.get())        # давление (Па)
        T_celsius = float(en_T.get()) # температура (в Цельсиях)
        
        # Переводим температуру в Кельвины
        T_kelvin = T_celsius + 273.15
        R = 8.31
        
        # Расчет объема (в м^3)
        # Формула: V = (m * R * T) / (M * P)
        volume = (m * R * T_kelvin) / (M * P)
        res = round(volume, 4)
        
        messagebox.showinfo("Результат", f"Объем газа (V) = {res} м³")
    except ValueError:
        messagebox.showerror("Ошибка", "Пожалуйста, введите числовые значения")
    except ZeroDivisionError:
        messagebox.showerror("Ошибка", "Давление или молярная масса не могут быть равны нулю")

# 3. Интерфейс
window = Tk()
window.title("Калькулятор объема газа")
window.geometry("550x400")
window.configure(background="pink")

# 3.2 Оформление виджетов
window.option_add("*Label.font", "Arial 12 normal")
window.option_add("*Label.foreground", "purple")
window.option_add("*Label.background", "white")
window.option_add("*Entry.font", "Arial 12 bold")
window.option_add("*Button.font", "Arial 12 bold")
window.option_add("*Button.background", "pink")

# 3.3 Фрейм
frame = Frame(window, padx=20, pady=20)
frame.pack(expand=True)
frame.configure(background="white")

# 3.4 Надписи и поля ввода
# Масса m
Label(frame, text="Масса газа (г):").grid(row=1, column=1, pady=5, sticky="e")
en_m = Entry(frame)
en_m.grid(row=1, column=2, pady=5)

# Молярная масса M
Label(frame, text="Молярная масса (г/моль):").grid(row=2, column=1, pady=5, sticky="e")
en_M_mol = Entry(frame)
en_M_mol.grid(row=2, column=2, pady=5)

# Давление P
Label(frame, text="Давление газа (Па):").grid(row=3, column=1, pady=5, sticky="e")
en_P = Entry(frame)
en_P.grid(row=3, column=2, pady=5)

# Температура T
Label(frame, text="Температура (°C):").grid(row=4, column=1, pady=5, sticky="e")
en_T = Entry(frame)
en_T.grid(row=4, column=2, pady=5)

# 3.6 Кнопка
btn = Button(frame, text="Рассчитать объем", command=calculate_volume)
btn.grid(row=5, column=1, columnspan=2, pady=20)

window.mainloop()