Advertisement
Guest User

Untitled

a guest
Oct 5th, 2024
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.73 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import messagebox, StringVar, OptionMenu
  3. from datetime import datetime
  4.  
  5. def format_temperature(temp):
  6.     return int(temp) if temp.is_integer() else temp
  7.  
  8. def display_statistics(temperatures):
  9.     if not temperatures:
  10.         messagebox.showinfo("Статистика", "История температур пуста.")
  11.         return
  12.    
  13.     avg_temp = sum(temperatures) / len(temperatures)
  14.     max_temp = max(temperatures)
  15.     min_temp = min(temperatures)
  16.  
  17.     stats = (
  18.         f"Средняя температура: {format_temperature(avg_temp)}°C\n"
  19.         f"Максимальная температура: {format_temperature(max_temp)}°C\n"
  20.         f"Минимальная температура: {format_temperature(min_temp)}°C"
  21.     )
  22.     messagebox.showinfo("Статистика", stats)
  23.  
  24. def add_temperature(temperatures, entry):
  25.     try:
  26.         t = float(entry.get())
  27.         if t is not None:
  28.             temperatures.append(t)
  29.             if t < 0:
  30.                 messagebox.showwarning("Предупреждение", "Winter is coming ⚠️❄️☃️")
  31.             else:
  32.                 messagebox.showinfo("Информация", "Don't worry, be happy")
  33.             entry.delete(0, tk.END)
  34.     except ValueError:
  35.         messagebox.showerror("Ошибка", "Пожалуйста, введите корректное число.")
  36.  
  37. def save_history(temperatures, format_type):
  38.     if not temperatures:
  39.         messagebox.showinfo("Сохранение истории", "История температур пуста.")
  40.         return
  41.    
  42.     filename = f"temperature_history.{format_type}"
  43.    
  44.     try:
  45.         with open(filename, "w") as file:
  46.             for temp in temperatures:
  47.                 file.write(f"{format_temperature(temp)}°C\n")
  48.        
  49.         messagebox.showinfo("Сохранение истории", f"История температур успешно сохранена в '{filename}'.")
  50.    
  51.     except Exception as e:
  52.         messagebox.showerror("Ошибка", f"Не удалось сохранить файл: {e}")
  53.  
  54. def update_time(label):
  55.     current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  56.     label.config(text=f"Текущая дата и время: {current_time}")
  57.     label.after(1000, update_time, label)
  58.  
  59. def main():
  60.     root = tk.Tk()
  61.     root.title("Датчик уличной температуры")
  62.    
  63.     root.geometry("400x400")
  64.     root.configure(bg="#e0f7fa")
  65.  
  66.     title_label = tk.Label(root, text="Датчик уличной температуры", font=("Helvetica", 16, "bold"), bg="#e0f7fa")
  67.     title_label.pack(pady=20)
  68.  
  69.     time_label = tk.Label(root, bg="#e0f7fa", font=("Helvetica", 12))
  70.     time_label.pack(pady=10)
  71.  
  72.     update_time(time_label)
  73.  
  74.     instruction_label = tk.Label(root, text="Введите среднесуточную температуру (°C):", bg="#e0f7fa", font=("Helvetica", 12))
  75.     instruction_label.pack(pady=10)
  76.  
  77.     entry = tk.Entry(root, font=("Helvetica", 12), width=10)
  78.     entry.pack(pady=10)
  79.  
  80.     frame = tk.Frame(root, bg="#e0f7fa")
  81.     frame.pack(pady=10)
  82.  
  83.     temperatures = []
  84.  
  85.     format_var = StringVar(value="txt")
  86.     formats = ["txt", "csv", "json", "xml", "log"]
  87.    
  88.     format_menu = OptionMenu(frame, format_var, *formats)
  89.     format_menu.config(bg="#FFC107")
  90.     format_menu.pack(pady=10)
  91.  
  92.     button_width = 30
  93.     button_height = 2
  94.  
  95.     btn_add = tk.Button(frame, text="Добавить температуру",
  96.                         command=lambda: add_temperature(temperatures, entry),
  97.                         bg="#4CAF50", fg="white", font=("Helvetica", 12), width=button_width, height=button_height)
  98.    
  99.     btn_stats = tk.Button(frame, text="Показать статистику температур",
  100.                           command=lambda: display_statistics(temperatures),
  101.                           bg="#2196F3", fg="white", font=("Helvetica", 12), width=button_width, height=button_height)
  102.    
  103.     btn_save = tk.Button(frame, text="Сохранить историю температур",
  104.                          command=lambda: save_history(temperatures, format_var.get()),
  105.                          bg="#FFC107", fg="black", font=("Helvetica", 12), width=button_width, height=button_height)
  106.    
  107.     btn_exit = tk.Button(frame, text="Завершить программу",
  108.                          command=root.quit,
  109.                          bg="#f44336", fg="white", font=("Helvetica", 12), width=button_width, height=button_height)
  110.  
  111.     btn_add.pack(pady=10)
  112.     btn_stats.pack(pady=10)
  113.     btn_save.pack(pady=10)
  114.     btn_exit.pack(pady=10)
  115.  
  116.     root.mainloop()
  117.  
  118. if __name__ == "__main__":
  119.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement