Se me olvido decir que si en lugar de usar root.quit() utilizo root.destroy() , a veces lo que hace es dejarme un marco gris en pantalla. Es decir, elimina los frames pero se queda el toplevel.