Which of these is better and why?
button .b rename .b .b:cmd proc .b { args } "eval [list WidgetHandler .b] \$args"
or
button .b rename .b .b:cmd interp alias {} .b {} WidgetHandler .b
MS prefers the second, for both clarity and performance reasons (no string parsing at run time).
PWQ An alternate for the first would be:
proc .b {args} {uplevel 1 WidgetHandler .b $args}
So that the widget handler has access to the callers namespace et al.