123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import tkinter as tk
- from tkinter import ttk
- from tkinter import filedialog
- def calculate_dates():
- """
- Вычисляет предыдущую и следующую даты для заданной даты.
- """
- try:
- day = int(day_entry.get())
- month = int(month_entry.get())
- if not (1 <= month <= 12):
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, "Месяц должен быть от 1 до 12.")
- return
- days_in_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
- if not (1 <= day <= days_in_month[month]):
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, f"День должен быть от 1 до {days_in_month[month]} для месяца {month}.")
- return
- prev_day = day - 1
- prev_month = month
- if prev_day == 0:
- prev_month -= 1
- if prev_month == 0:
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, "Введенная дата не может быть 1 января (по условию задачи).")
- return
- prev_day = days_in_month[prev_month]
- next_day = day + 1
- next_month = month
- if next_day > days_in_month[month]:
- next_day = 1
- next_month += 1
- if next_month > 12:
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, "Введенная дата не может быть 31 декабря (по условию задачи).")
- return
- result = f"Предыдущий день: {prev_day:02d}.{prev_month:02d}\n"
- result += f"Следующий день: {next_day:02d}.{next_month:02d}\n"
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, result)
- filepath = filedialog.asksaveasfilename(defaultextension=".txt",
- filetypes=[("Текстовые файлы", "*.txt"),
- ("Все файлы", "*.*")])
- if filepath:
- try:
- with open(filepath, "w") as f:
- f.write(result)
- result_text.insert(tk.END, f"\nРезультат сохранен в файл: {filepath}")
- except Exception as e:
- result_text.insert(tk.END, f"\nОшибка при сохранении в файл: {e}")
- except ValueError:
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, "Введите корректные числа.")
- root = tk.Tk()
- root.title("Калькулятор дат")
- day_label = ttk.Label(root, text="День:")
- day_label.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W)
- day_entry = ttk.Entry(root)
- day_entry.grid(row=0, column=1, padx=5, pady=5, sticky=tk.E)
- month_label = ttk.Label(root, text="Месяц:")
- month_label.grid(row=1, column=0, padx=5, pady=5, sticky=tk.W)
- month_entry = ttk.Entry(root)
- month_entry.grid(row=1, column=1, padx=5, pady=5, sticky=tk.E)
- calculate_button = ttk.Button(root, text="Рассчитать", command=calculate_dates)
- calculate_button.grid(row=2, column=0, columnspan=2, padx=5, pady=5)
- result_text = tk.Text(root, height=5, width=30)
- result_text.grid(row=3, column=0, columnspan=2, padx=5, pady=5)
- root.mainloop()
|