переместить существующий кадр в новый кадр и создать новый кадр, используя старое имя - PullRequest
0 голосов
/ 22 сентября 2011

Я использовал фрейм в tcl с именем frame1 и другими. Теперь я установил процедуру, чтобы уничтожить все эти кадры. я хочу переместить эти кадры в новую переменную и создать новые кадры с такими же именами. мой код выглядит так:

proc DestroyAll {} {
    global parent_widget
    global new_widget
    destroy .sf.frame.main.xName
    for {set i 0} {$i < $Count} {incr i} {
        destroy .sf.frame.main.parameter($i)
    }
    destroy .sf.frame.main.buttons
    destroy .sf.frame.buttons
    destroy .sf.frame.main
    destroy .sf.frame
    destroy .sf
}

Populatenewdata --- >> этот процесс создает и заполняет кадр sf Я не хочу уничтожать эти кадры, но я хочу создать новый кадр. Есть ли способ сделать это, так как процедура заполнения этих кадров очень длинная и не может быть выполнена с помощью цикла.

1 Ответ

2 голосов
/ 22 сентября 2011

Tk не позволяет вам переписывать виджеты; их имена фиксируются с момента их создания до момента их уничтожения. (Вы можете заставить их визуально появляться внутри разных виджетов с соответствующими параметрами -in для pack и grid, но это строго визуальный эффект.)

Можно ли лучше управлять моделью для резервного копирования ваших виджетов, чтобы вы могли легко воссоздать виды на эту модель? (Ответ зависит от используемых виджетов - воссоздание виджета canvas или text вовсе не тривиально, хотя с text вы можете клонировать его начиная с 8.5 и далее - но обычно это довольно просто.) Сильнее в плане MVC поможет.

...