Внутренние имена Tk для виджетов работают очень похоже на то, как это происходит, но вполне работоспособное решение - сохранить только дескрипторы «интересных» виджетов (обычно в хэше). Затем вы просто используете этот дескриптор этого хеша как объект в вашей программе, чтобы вы могли напрямую ссылаться на интересные части (например, с синтаксисом Perl):
$thing->{submit}->invoke();
Конечно, если вы обращаетесь к объекту, очень похожему на этот, особенно из-за пределов реализации объекта, вам, вероятно, следует создать метод для его наблюдения. Это добавляет немного производительности, но делает вещи намного чище (Закон Деметры и все такое).
Весь трюк, чтобы справиться со всем этим, состоит в том, чтобы рассматривать всю сложность, как плавание в океане; Неважно, насколько глубока вода, пока вы плаваете только на поверхности. (Если вам действительно нужно огромное количество вложений, вы, вероятно, делаете это неправильно; GUI в основном работают лучше, когда они не очень вложенные.)