Inspiration
I was inspired to make this after having to read through a series of dates for each chapter of a textbook for one of my classes. I thought it would be nice to be able to quickly arrange these into a timeline that automatically sorts the dates to show the spread of events.
What it does
The user provides the events title and date, as well as the name for the timeline. This is all displayed with the events in order, which can be reversed by the user, in an orientation chosen by the user. The timeline can be saved to a CSV file and opened from a CSV file.
How we built it
I built the project using classes for the Timeline and for the Events in Python. The events are sorted by date as they are added to the timeline using comparison operators for the dates which are stored as datetime.date objects. The GUI was created using tkinter.
Challenges we ran into
Accommodating BC, AC or BCE, CE dates was a challenge because that information does not fit nicely into a datetime.date object. Therefore, I added a parameter for the events to hold the era and checked this parameter when sorting the events as they are added.
Accomplishments that we're proud of
I am proud to have implemented a useful GUI in Python.
What we learned
This was my first project creating a GUI, and one of the first times I have used classes in Python. In doing this project, I learned how OOP concepts from Java translate to the Python language, and how to use tkinter to make a GUI.
What's next for Timeline
Because timelines are useful tools for outlining the spread of events, there are two good applications for this Timeline project that would require additions. The first is the ability to resize the timeline so it can be used as an image in presentations or papers more easily. The second is the ability to turn the timeline into a worksheet with the option to turn the event titles and/or years into blank boxes with a list of the titles and/or years for students to study important events and their place in time.
Built With
- openpyxl
- python
- tkinter
Log in or sign up for Devpost to join the conversation.