"Desktop gui mvc" as in most mvc to be found for python is for web.
Pub sub is a way of sending messages its not mvc, but you could impliment mvc using it for the observable part of mvc.
What ive done is more then just message passing, it keeps your data and your gui code totally seperate from each other.
There are two queued threaded messages channels, one for passing messages to the data, and one for passing data to the gui.
The gui remains responsive while the data is doing long running taks.
With pubsub you send and message and all of its subscribers carry out there tasks and then after they have all finished the gui event loop can continue.
With my code a msg is sent to a queue in a seperate thread and the gui event loop continues instantly,
this thread works on your data and uses another queue in a seperate thread to send data back to the gui.