Create a modal dialog and wait for response. Where you have an application that should look (more or less) native on several platforms, use [tk_messageBox] in preference to this if possible and reasonable. ---- http://www.purl.org/tcl/home/man/tcl8.5/TkCmd/dialog.htm The function can be found in the installed tcl/tk file `dialog.tcl`. ---- **Manual** '''SYNOPSIS''' : '''tk_dialog''' ''window title text bitmap default string string ...'' '''DESCRIPTION''' This procedure is part of the [Tk] script library. Its arguments describe a dialog box: ''window'': Name of top-level window to use for dialog. Any existing window by this name is destroyed. ''title'': Text to appear in the window manager's title bar for the dialog. ''text'': Message to appear in the top portion of the dialog box. ''bitmap'': If non-empty, specifies a bitmap to display in the top portion of the dialog, to the left of the text. If this is an empty string then no bitmap is displayed in the dialog. ''default'': If this is an integer greater than or equal to zero, then it gives the index of the button that is to be the default button for the dialog (0 for the leftmost button, and so on). If less than zero or an empty string then there won't be any default button. ''string'': There will be one button for each of these arguments. Each string specifies text to display in a button, in order from left to right. After creating a dialog box, '''tk_dialog''' waits for the user to select one of the buttons either by clicking on the button with the mouse or by typing return to invoke the default button (if any). Then it returns the index of the selected button: 0 for the leftmost button, 1 for the button next to it, and so on. If the dialog's window is destroyed before the user selects one of the buttons, then -1 is returned. While waiting for the user to respond, '''tk_dialog''' sets a local grab. This prevents the user from interacting with the application in any way except to invoke the dialog box. ---- <> [RS]: You can set the font of all dialogs explicitly (tested on W95) with something like option add *Dialog.msg.font {Arial 12} [Larry Smith] You can use *Dialog*font {Arial 12} to make the buttons match. ---- [LES] on 07 May 2005: when this dialog pops up, we can tab through all the buttons and change which button is highlighted. Pressing space triggers the currently highlighted button's action, but pressing Enter/Return always triggers the default button, even if is not the one highlighted. Bug or feature? [MGS] [[2005/05/17]] I believe this is a feature. The default button is defined when the dialog is created - I believe this should not change. The active button can be invoked using the spacebar. ---- [SYStems] Since the word modal bedazzled me I searched the net and found [http://java.sun.com/j2se/1.3/docs/api/java/awt/Dialog.html] and I quote ''A dialog can be either modeless (the default) or modal. A modal dialog is one which blocks input to all other toplevel windows in the app context, except for any windows created with the dialog as their owner'' Of course the word default applies to Java, not Tk. <> ---- **Example** ====== set default 1 set answer [tk_dialog .dialog1 "The Question" "You can have" question $default \ Cancel Water "No Tea" {No Milk} "No Coffee"] tk_messageBox -icon info -title "The Answer" -message "answer=$answer." ====== ---- [LGT] bitmap parameter can be "@" followed by a path to an .xbm file. ====== set answer [tk_dialog .dialog1 "The Question" "You can have" "@../images/myquestionicon.xbm" $default \ Cancel Water "No Tea" {No Milk} "No Coffee"] ====== ---- **See also** * [dialog] * [tk_chooseColor] * [tk_chooseDirectory] * [tk_getOpenFile] * [tk_getSaveFile] * [tk_messageBox] <> Command | Dialog | Tk syntax help | Arts and Crafts of Tcl-Tk Programming