A nice person sent me this offline. Being new to Tk it was something
I was not aware of:

---

In "regular" Tcl/Tk we'd use the "update" command to let the widgets
redraw themselves.  I'm not sure what Perl/Tk or Ruby/Tk needs.
Hopefully something similar!

---

I will try this tomorrow when I have access to the system the code
runs on, but a snipet from the Tcl/Tk Reference Manual looks
promising:

...

If the idletasks keyword is specified as an argument to the command,
then no new events or errors are processed;  only idle callbacks are
invoked. This causes operations that are normally deferred, such as
display updates and window layout calculations, to be performed
immediately.

...