`destroy` — 창 하나 이상 파괴하기
destroy — 창 하나 이상 파괴하기
화면의 위젯을 더 이상 쓰지 않을 때, 그 위젯과 하위 계층을 통째로 지우고 싶을 땐 destroy를 쓰면 돼요. 꼭 필요할 때만 정리하고 싶다면, 위젯을 하나씩 지우는 대신 부모를 지우면 자식이 다 같이 사라져요.
본문
시그니처
destroy ?window window ...?
이 명령은 window 인자로 주어진 창들과 그 모든 하위(descendant) 창을 삭제해요. 만약 "." 창이 삭제되면 모든 창이 파괴되고 애플리케이션은 (보통) 종료돼요.
창들은 주어진 순서대로 파괴돼요. 어떤 창을 파괴하는 중 오류가 발생하면 명령은 남은 창을 파괴하지 않고 중단돼요. window가 존재하지 않아도 오류를 돌려주지 않아요.
예제
주어진 위젯의 직계 자식인 체크버튼을 전부 파괴하기.
proc killCheckbuttonChildren {parent} {
foreach w [winfo children $parent] {
if {[winfo class $w] eq "Checkbutton"} {
destroy $w
}
}
}
winfo children으로 부모의 직계 자식 목록을 얻은 뒤, winfo class로 위젯 클래스가 Checkbutton인 것만 걸러서 destroy하는 흐름이에요.
더 알아보기
wm(창 관리자 명령), winfo children, 위젯별 pathName destroy와 함께, 캔버스 아이템 삭제는 canvas의 delete 하위 명령을 참고하세요.