Re-tuning USRP with wxGui

I have an application in which I’d like to throw up a live spectrum and
automatically toggle back and forth between two different tuned
frequencies in a USRP N210. The two frequencies to tune between are too
far to be captured in the same IF bandwidth, so USRP re-tuning is
required. This is trivial to do if manual selection is done by the
operator via the GUI (with chooser buttons), but I’m not sure how
exactly to automate it behind the scenes.

I thought it would be as simple as tune to freq 1 ->top_block.start() ->
sleep() -> top_block.stop() -> top_block.wait() -> retune to freq2 ->
repeat in a while loop. However, I see now that a wxGui top_block is
different from the normal top_block in that it is blocking once it is
running. It appears that once the GUI is up, it is holding operations
in its own while loop and thus does not return to my main flowgraph main
loop. It basically doesn’t run in the background as I thought it would.
I experimented with putting this kind of functionality in a callback,
but when stuck in a callback method the GUI doesn’t update the spectrum.

This seems like it should be reasonable to do, but this is my first
crack at developing a GNU Radio application so maybe I’m just missing
something obvious. Any general ideas on how I might automatically
re-tune the USRP and update the live spectrum plot to reflect the newly
tuned frequency without requiring user input?