In the second iteration of my sudoku project, I built a GUI from scratch with PyGame. Documentation for the first version is located here, though I have not worked on it in a while.
Screenshot of the desktop GUI I created.
This summer, I created a Python class that randomly generated sudoku puzzles, but I had no way to visualize or play them. When I found out about PyGame, it seemed like a plausible solution, so I decided to dive in to my first GUI project.
I stole the design for this app from the New York Times' online sudoku page, because this project focused on UI implementation, not UI design. Although I will eventually design my own UI for this project, I wanted this version to challenge me to implement a UI according to a predetermined specification, instead of making it up as I went along. Even though I began with a well-defined spec, it was not immediately obvious to me how I would implement it. As I would soon learn, PyGame and JavaScript-based web apps have very little in common.