-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathproject-9.py
More file actions
92 lines (71 loc) · 3.18 KB
/
project-9.py
File metadata and controls
92 lines (71 loc) · 3.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Project-9 : Smart Calender
# Codesphered01010
import tkinter as tk
from tkinter import ttk, messagebox
from tkcalendar import Calendar
import datetime
import os
import json
class SmartCalendar:
def __init__(self, root):
self.root = root
self.root.title("Smart Calendar")
self.root.geometry("600x500")
self.events = {}
self.load_events()
self.calendar = Calendar(self.root, selectmode="day", date_pattern="yyyy-mm-dd")
self.calendar.pack(pady=20)
add_event_button = tk.Button(self.root, text="Add Event", command=self.add_event)
add_event_button.pack(pady=5)
show_events_button = tk.Button(self.root, text="Show Events", command=self.show_events)
show_events_button.pack(pady=5)
quit_button = tk.Button(self.root, text="Quit", command=self.root.quit)
quit_button.pack(pady=20)
def add_event(self):
"""Add an event for the selected date."""
selected_date = self.calendar.get_date()
event_window = tk.Toplevel(self.root)
event_window.title(f"Add Event on {selected_date}")
event_window.geometry("400x200")
tk.Label(event_window, text=f"Add Event for {selected_date}", font=("Arial", 14)).pack(pady=10)
event_text = tk.Text(event_window, width=40, height=5)
event_text.pack(pady=10)
def save_event():
event_data = event_text.get("1.0", tk.END).strip()
if not event_data:
messagebox.showwarning("Empty Event", "Event cannot be empty.")
return
if selected_date not in self.events:
self.events[selected_date] = []
self.events[selected_date].append(event_data)
self.save_events()
messagebox.showinfo("Success", "Event added successfully!")
event_window.destroy()
save_button = tk.Button(event_window, text="Save Event", command=save_event)
save_button.pack(pady=10)
def show_events(self):
"""Show events for the selected date."""
selected_date = self.calendar.get_date()
event_list = self.events.get(selected_date, [])
event_window = tk.Toplevel(self.root)
event_window.title(f"Events on {selected_date}")
event_window.geometry("400x300")
tk.Label(event_window, text=f"Events for {selected_date}", font=("Arial", 14)).pack(pady=10)
if event_list:
for event in event_list:
tk.Label(event_window, text=f"- {event}", anchor="w").pack(pady=2, padx=20, fill="x")
else:
tk.Label(event_window, text="No events found for this date.").pack(pady=10)
def save_events(self):
"""Save events to a JSON file."""
with open("events.json", "w") as file:
json.dump(self.events, file)
def load_events(self):
"""Load events from a JSON file."""
if os.path.exists("events.json"):
with open("events.json", "r") as file:
self.events = json.load(file)
if __name__ == "__main__":
root = tk.Tk()
app = SmartCalendar(root)
root.mainloop()