This was my first foray into a Tkinter app and so I chose a simple and certainly overkill task to make into a gui. Aside from one small aspect, this code functions as I was intending and seems to have adequate performance. I'm looking for help to make it more pythonic, not by simply pep8-ing it but by helping me better design the structure of functions and the code within them. For instance, do I really need `self.` for just about everything in my class mainframe? The one thing that isn't performing as I want is the writing to CSV. It keeps the CSV file open in python until the tkinter window is closed and it also creates a CSV file when the `dry run` checkbox is checked. One more note, this app was designed only to function on Windows. Since it's a bit long, the code can be viewed [here][1]. Thanks! [1]: https://gist.github.com/click-here/312a8e1d00822099c102413818f2cac3 "here"