Te recomiendo que uses
MVC, así dejas todo modularizado y no empiezas a hacer espagueti.
Especialmente cuando desarrollas interfaces gráficas es muy común que empieces a fragmentar y repetir la lógica en muchos lugares.
Puedes usar cualquier modulo para interfaces gráficas (views). PyGTK, WxPython, PyQT, TKinteger.
Todos tienen sus pros y sus contras.
Para la base de datos un ORM no estaría mal (models). Con esto es mas cómodo trabajar con la base de datos y con los objetos en python. También te recomiendo poner la lógica de negocio en los modelos. Pero solo la lógica de negocio!!! ten eso en mente.
Los controladores son todos los binds a los eventos (controladores), hay es donde le das vida a la interfaz. Y regularmente donde se unen todas las piezas. Recuerda ir modularizando esto, por que a lo largo del proyecto es lo que mas tiende a crecer.
Regularmente todas las interfaces gráficas están dirigidas a eventos, así que te recomiendo investigar un poco al respecto.
Tal vez este
tutorial de wxpython y mvc te ayude un poco.