To summarize, we started by learning how to structure the Tkinter program as classes and objects.
We then decided the data structure for our program. This enabled us to set the ground for writing the rest of the program logic, maintaining a clean separation between data, logic, and its visual representation. We saw the vital benefits of deciding the data structure in advance.
We also worked with more Tkinter widgets such as Spinbox, Button, Entry, and Checkbutton. We also saw the grid geometry manager in action in the chapter.
We then saw how to bind widgets to higher-order functions using command callbacks. This is a very common technique used in GUI programming.
We then understood multithreaded programming in the context of Tkinter. We moved the audio playback onto a separate thread. This enabled us to keep the audio playing without hampering Tkinter's main loop in any way.
We then understood how to persist an object's state with the pickle
module and then how to unpickle it later to...