bonkora 님이 제공해 주신 팁입니다.
ActiveTcl의 Wish8x를 실행시켜 wish8x 창과 콘솔 창을 띄운 후 만든 코드를 콘솔에서 실행시키고 난 뒤에 한번 더 코드를 실행시키면 "window name "xxx" already exists in parent"라는 에러메시지가 뜨면서 실행이 멈춥니다. 처음에 코드를 실행시킬 때 만든 위젯들이 있기 때문인데 같은 코드를 실행시킬 때는 앞서 만든 위젯들을 모두 없애야 합니다. 일일이 위젯들을 없애기는 불편하기 때문에 아래의 프러시저가 유용할 것입니다.
proc clw {{w .}} {
foreach {mywidgets} [winfo children $w] {
destroy $mywidgets
}
}
메인 윈도우인 "."의 자식 위젯들을 없애려면 단순히
clw
라고 하면 되고 예를 들어 윈도우 ".top"의 자식 위젯들을 없애려면
clw .top
라고 하면 됩니다.
'Tcl & Tk > 팁 (Tip)' 카테고리의 다른 글
모든 위젯에 툴팁 달기 (0) | 2025.03.06 |
---|---|
Wish8x를 실행시킬 때 마다 특정 코드를 자동실행 (0) | 2025.03.06 |
음악에 쓰이는 음들의 진동수(주파수) 구하는 식 (0) | 2025.03.06 |
문자열로 비트맵 이미지 만들기 (0) | 2025.03.06 |
C#용 Tcl/Tk 인터프리터 (0) | 2025.03.06 |