`tk_dialog` — 모달 대화상자 만들고 응답 기다리기
tk_dialog — 모달 대화상자 만들고 응답 기다리기
간단한 확인·선택 대화상자가 필요할 때, 일일이 위젯을 배치하기 전에 tk_dialog라는 간편한 프로시저가 있는지 먼저 떠올려 보세요. 버튼 목록을 주면 그 중 하나를 선택할 때까지 기다렸다가 선택한 버튼의 인덱스를 돌려줘요.
본문
시그니처
tk_dialog window title text bitmap default string string ...
이 프로시저는 Tk 스크립트 라이브러리의 일부예요. 대체로 tk_messageBox에 의해 대체되었어요. 인자들이 대화상자를 이렇게 표현해요.
인자
window — 대화상자에 쓸 최상위(top-level) 창의 이름이에요. 이 이름으로 이미 존재하는 창은 파괴돼요.
title — 대화상자의 창 관리자 제목 표시줄에 나타날 텍스트예요.
text — 대화상자 위쪽 부분에 나타날 메시지예요.
bitmap — 비어 있지 않으면 대화상자 위쪽, 텍스트 왼쪽에 표시할 비트맵(Tk_GetBitmap이 받아들이는 형태)을 지정해요. 빈 문자열이면 대화상자에 비트맵을 표시하지 않아요.
default — 0 이상의 정수면 대화상자의 기본 버튼이 될 버튼의 인덱스를 알려 줘요(0이 맨 왼쪽 버튼). 0보다 작거나 빈 문자열이면 기본 버튼이 없어요.
string — 이 인자 하나마다 버튼 하나가 생겨요. 각 문자열은 왼쪽에서 오른쪽 순서로 버튼에 표시할 텍스트를 지정해요.
동작
대화상자를 만든 뒤 tk_dialog는 사용자가 버튼 중 하나를 (마우스로 클릭하거나, 기본 버튼이 있으면 Return 키를 눌러) 선택할 때까지 기다려요. 그런 다음 선택한 버튼의 인덱스를 돌려줘요. 맨 왼쪽 버튼이 0, 그다음이 1, 이런 식이에요.
사용자가 버튼을 고르기 전에 대화상자 창이 파괴되면 -1을 돌려줘요. 사용자 응답을 기다리는 동안 tk_dialog는 로컬 grab을 설정해서, 대화상자를 조작하는 것 외에는 애플리케이션과 상호작용하지 못하게 막아요.
예제
set reply [tk_dialog .foo "The Title" "Do you want to say yes?" \
questhead 0 Yes No "I'm not sure"]
제목 The Title, 메시지 Do you want to say yes?, questhead 비트맵, 0번 버튼을 기본으로 Yes·No·I'm not sure 버튼을 만드는 예제예요. 사용자가 고른 버튼 인덱스가 $reply에 저장돼요.
더 알아보기
tk_messageBox 문서를 함께 보세요. tk_messageBox가 더 현대적이고 유연한 대체 수단이에요.