Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- from tkinter import ttk
- class PlannerApp:
- def __init__(self, master):
- self.master = master
- self.master.title("Weekly Planner")
- self.master.geometry("800x600")
- self.days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
- # Create a frame to hold the planner grid
- self.planner_frame = ttk.Frame(self.master)
- self.planner_frame.pack(padx=20, pady=20)
- # Create a grid of labels for each day of the week
- for i, day in enumerate(self.days):
- day_label = ttk.Label(self.planner_frame, text=day)
- day_label.grid(row=0, column=i+1, padx=10, pady=10)
- # Create a list of task labels
- self.tasks = []
- for i in range(10):
- task = f"Task {i+1}"
- self.tasks.append(task)
- # Create a list of labels for each task
- self.task_labels = []
- for i, task in enumerate(self.tasks):
- task_label = ttk.Label(self.planner_frame, text=task, width=20)
- task_label.grid(row=i+1, column=0, padx=10, pady=10)
- self.task_labels.append(task_label)
- # Create a list of entry boxes for each day and task
- self.entries = []
- for i in range(len(self.tasks)):
- entries_row = []
- for j in range(len(self.days)):
- entry = ttk.Entry(self.planner_frame, width=20)
- entry.grid(row=i+1, column=j+1, padx=10, pady=10)
- entries_row.append(entry)
- self.entries.append(entries_row)
- # Allow tasks to be dragged and dropped onto different days
- for task_label in self.task_labels:
- task_label.bind("<ButtonPress-1>", self.on_start)
- task_label.bind("<B1-Motion>", self.on_drag)
- task_label.bind("<ButtonRelease-1>", self.on_drop)
- def on_start(self, event):
- # Record the task label that was clicked on
- widget = event.widget
- self.current_task = self.task_labels.index(widget)
- self.drag_start = (event.x_root, event.y_root)
- def on_drag(self, event):
- # Calculate the x and y displacement of the task label
- x_displacement = event.x_root - self.drag_start[0]
- y_displacement = event.y_root - self.drag_start[1]
- # Move the task label by the displacement
- widget = event.widget
- widget.place(x=widget.winfo_x()+x_displacement, y=widget.winfo_y()+y_displacement)
- def on_drop(self, event):
- # Record the day label that the task label was dropped onto
- widget = event.widget
- day = self.days.index(widget.cget("text")) + 1
- # Update the corresponding entry box with the task name
- self.entries[self.current_task][day-1].delete(0, tk.END)
- self.entries[self.current_task][day-1].insert(0, self.tasks[self.current_task])
- # Reset the position of the task label
- widget.place(x=0, y=0)
- if __name__ == "__main__":
- root = tk.Tk()
- app = PlannerApp(root)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement