>According to my Perl/Tk book, to halt the 
>processing of any and all callbacks bound to a 
>widget/event combination, you can use Tk::break 
>instead of the milder return.

Yes.  I think that's the section I read that made me wonder whether I
needed to be returning this "break" thingy.

>There appears to be a method named callback_break 
>(on the same level as the messageBox and 
>chooseColor methods). That might be what you need 
>to call. I'm just guessing, here...

I tried calling callback_break(), but that didn't seem to do anything,
either.

I had a couple of responses on the perl/Tk newsgroup saying that so
long as you bind the destroy event, it should then be up to your
function to decide whether it exits or not.  Ie, just returning,
rather than calling exit() should mean the main loop continues to run.

My code is definitely being called and I'm definitely not calling
exit(), but it still seems to die, anyway.

Obviously, this requires a deeper knowledge of how the event handling
works than I have the time to look at.

What I might end up doing, at least in the short term, is putting an
exit button in the window and getting into the habit of clicking that,
rather than the "X" in the corner.

It always amazes me how things that you think are going to be trivial
always end up consuming so much more time than all the complex code
you write for your application :-).