Sort of…
When your procedure call occurs within the actions=... param of the $button widget, the entire procedure is not processed until the button is clicked, thereby avoiding the costly $list widget evaluation when your button is refreshed.
However, if your procedure call occurs directly within the body of a $button widget, it is still invoked each time the $button widget is rendered/refreshed even though any $action widgets within the procedure are only performed when the button is clicked. Thus, the costly $list widgets are still processed each time the $button widget is rendered/refreshed.
-e