focus - Manage the input focus <
> http://purl.org/tcl/home/man/tcl8.5/TkCmd/focus.htm '''focus''' : Returns the path name of the focus window on the display containing the application's main window, or an empty string if no window in this application has the focus on that display. Note: it is better to specify the display explicitly using '''-displayof''' (see below) so that the code will work in applications using multiple displays. '''focus''' ''window'' : If the application currently has the input focus on ''window'' 's display, this command resets the input focus for ''window'' 's display to ''window'' and returns an empty string. If the application doesn't currently have the input focus on ''window'' 's display, ''window'' will be remembered as the focus for its top-level; the next time the focus arrives at the top-level, Tk will redirect it to ''window''. If ''window'' is an empty string then the command does nothing. '''focus -displayof''' ''window'' : Returns the name of the focus window on the display containing ''window''. If the focus window for ''window'' 's display isn't in this application, the return value is an empty string. '''focus -force''' ''window'' : Sets the focus of ''window'''s display to ''window'', even if the application doesn't currently have the input focus for the display. This command should be used sparingly, if at all. In normal usage, an application should not claim the focus for itself; instead, it should wait for the window manager to give it the focus. If ''window'' is an empty string then the command does nothing. '''focus -lastfor''' ''window'' : Returns the name of the most recent window to have the input focus among all the windows in the same top-level as ''window''. If no window in that top-level has ever had the input focus, or if the most recent focus window has been deleted, then the name of the top-level is returned. The return value is the window that will receive the input focus the next time the window manager gives the focus to the top-level. <> When is it important to use focus? ---- To change the order in which focus moves between widgets upon the pressing of 'Tab', either: * change the order in which the widgets are '''created''' (N.B. packing order does not matter!) * use the [raise] and [lower] commands to change stacking order ---- [RS] 2006-05-24: '''focus -force $toplevel''' on [Windows] has the effect of flashing the app's button in the task bar. [MG] has found this behaviour to be very erratic. Usually [focus] (and [focus] -force) transfer the focus, but occasionally they'll only flash the taskbar button for the app. ([wm deiconify] does the reverse, usually flashing the taskbar but sometimes giving the app focus instead.) An external lib for flashing the taskbar is far more reliable, from my experience. ---- [LV] What are some techniques when a developer wants to open a Tk window, but does NOT want the desktop mouse focus to move to that window? Right now, the Tk window always pops in front and takes the keyboard focus away from the primary application, which is not helpful in this particular case. ---- <> ---- **See also** * [grab] * [tk_focusNext] ---- !!!!!! [Tk syntax help] - [Arts and Crafts of Tcl-Tk Programming] - %| [Category Command] from [Tk] | [Category Introspection] |% !!!!!!