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()