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"