This project is a GUI-based Task Management Application developed in Python using Tkinter.
It allows users to add, view, complete, delete, and track tasks with deadlines and priority levels.
Each task can trigger an automatic alert when the deadline is reached.
The program stores all tasks locally using Python’s pickle module.
This project was developed for the Open Source Programming course.
Users can create tasks with:
- Title
- Category
- Priority (1 = low, 2 = medium, 3 = high)
- Deadline (KST — YYYY-MM-DD HH:MM)
Tasks are displayed with:
- Title
- Category
- Priority
- Remaining Time
- Expired status
Selecting a task and clicking Done marks it as completed.
Users can delete any selected task using the Delete button.
A background thread waits until each task deadline.
When the time is up, the console prints:
[ALERT] Deadline reached for: <task title>
todo_project/
├── todo_gui.py
├── todo_manager.py
├── task.py
├── tasks.dat # auto-created, not uploaded to GitHub
└── README.md
Python 3.8+
Modules used:
- tkinter
- time
- datetime
- threading
- pickle
- pytz
cd "D:\open source software\todo_project"
python todo_gui.py
Click Add, fill the fields, and press Save.
Select the task → click Done.
Select → click Delete.
If deadline is reached, console prints an alert.
All tasks are saved in tasks.dat using pickle.
When reopening the program, saved tasks are loaded automatically.
| Test | Expected |
|---|---|
| Add Task | Task appears in list |
| Invalid Deadline | Error popup |
| Mark Done | Task marked completed |
| Delete Task | Removed from list |
| Restart Program | Tasks still exist |
| Deadline Reached | Terminal alert printed |
(Use the screenshots above for documentation.)
- todo_gui.py
- todo_manager.py
- task.py
- README.md
- tasks.dat
- __pycache__/
Add this to .gitignore:
tasks.dat
__pycache__/
*.pyc
The core architecture and initial logic of this project are based on the author's previous work (a command-line task manager). During the development of the GUI and background services, an AI tool (specifically [ChatGPT]) was utilized for optimizing and ensuring the robustness of specific advanced components.
Key areas where AI assistance was leveraged include:
- Timezone and Timestamp Conversion: Consulting the AI tool to confirm the correct implementation of
pytzanddatetimefunctions for accurately converting user-input time (KST) into a valid, localized Unix timestamp, ensuring reliable deadline tracking. - Background Reminder Threading: Ensuring the multi-threaded implementation (
threading.Thread) used to manage deadline alerts was configured correctly (e.g., usingdaemon=Trueand proper time calculation) to run in the background without freezing the main Tkinter GUI. - Thread Safety and Locking: Validating the correct use of
threading.Lockwithin theTodoManagerto protect the shared data file (tasks.dat) from corruption during simultaneous read/write operations by different threads.
- Edit tasks
- Sort tasks (by date/priority/category)
- Add search bar in GUI
- Use JSON or SQLite instead of pickle
- Add system notifications
This project demonstrates:
- GUI design with Tkinter
- Multithreading for alerts
- Local file persistence
- A clean, functional interface
- Manual testing and documentation
The application is simple but fully functional, and ideal for an academic open-source course.












