That's where I was headed. But there are two Dialog-widget-type features I couldn't figure out how to implement. 1) solved by the GRAB you demonstrated (thanks). 2):
Dialog, messageBox and DialogBox widgets all suspend the routine calling them until the user deals with the popup.
Toplevel does not. A new (Toplevel) window is spawned and the routine goes on its way.
I need for the routine to wait until the box is closed and react to the data the user entered.
Why? I'm looping through an array that points to records data. If a particular record is missing one or more fields, a window pops to ask for it. When it's been entered, the next window pops prompting for missing fields in subsequent records.
As is, the mainwindow tries to spawn LOTS of windows (one for each record missing any fields) simultaneously (and bombs out).
If I understand you correctly, you want a dialog type widget that returns some data, rather than an Ok, etc. You might want to look at Tk RGBColorDialog where I use a toplevel as a dialog with a data return value.