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


from tkinter import *
from tkinter import messagebox

# 2. Функция расчета времени зарядки (charging)
def charging():
    # Считываем емкость и ток из полей ввода
    try:
        cap = float(enc.get()) # Емкость аккумулятора (Ач)
        cur = float(ent.get()) # Зарядный ток (А)
        
        if cur <= 0:
            messagebox.showerror("Ошибка", "Ток зарядки должен быть больше нуля!")
            return
            
        # Формула: (Емкость / Ток) * Коэффициент потерь (обычно 1.2 - 1.4)
        time = round((cap / cur) * 1.2, 1)
        
        messagebox.showinfo("Результат", f"Время полной зарядки: {time} часов")
    except ValueError:
        messagebox.showerror("Ошибка", "Пожалуйста, введите числовые значения")

# 3. Интерфейс
window = Tk()
window.title("Калькулятор зарядки аккумулятора")
window.geometry("500x300")
window.configure(background="lightblue") # Изменен цвет фона

# 3.2 Оформление виджетов (шрифт, цвет)
# Мы поменяли зеленые цвета на оттенки синего и голубого
window.option_add("*Label.font", "Arial 14 normal")
window.option_add("*Label.foreground", "darkblue")
window.option_add("*Label.background", "white")

window.option_add("*Entry.font", "Arial 14 bold")
window.option_add("*Entry.foreground", "black")
window.option_add("*Entry.background", "white")

window.option_add("*Button.font", "Arial 14 bold")
window.option_add("*Button.foreground", "white")
window.option_add("*Button.background", "dodgerblue") # Цвет кнопки

# 3.3 В окне - эластичный фрейм для виджетов
frame = Frame(window, padx=10, pady=10)
frame.pack(expand=True)
frame.configure(background="white")

# 3.4 Надписи для емкости (lbc) и тока (lbt)
lbc = Label(frame, text="Введите емкость (Ач):")
lbc.grid(row=1, column=1, pady=10)

lbt = Label(frame, text="Введите ток (А):")
lbt.grid(row=2, column=1, pady=10)

# 3.5 Поля ввода для емкости (enc) и тока (ent)
enc = Entry(frame)
enc.grid(row=1, column=2)

ent = Entry(frame)
ent.grid(row=2, column=2)

# 3.6 Кнопка (btn), привязана функция charging
btn = Button(frame, text="Рассчитать время", command=charging)
btn.grid(row=3, column=1, columnspan=2, pady=10)

# 3.7 Отображение окна
window.mainloop()