The binding that triggers this event. See below.
The delegate callback to execute when the event triggers.
This widget to aid method chaining.
Bindings: The binding argument specifies a sequence of one or more event patterns, with optional white space between the patterns. Each event pattern may take one of three forms. In the simplest case it is a single printing ASCII character, such as a or [. The character may not be a space character or the character <. This form of pattern matches a KeyPress event for the particular character. The second form of pattern is longer but more general. It has the following syntax.
<modifier-modifier-type-detail>
The entire event pattern is surrounded by angle brackets. Inside the angle brackets are zero or more modifiers, an event type, and an extra piece of information (detail) identifying a particular button or keysym. Any of the fields may be omitted, as long as at least one of type and detail is present. The fields must be separated by white space or dashes (dashes are prefered). The third form of pattern is used to specify a user-defined, named virtual event. It has the following syntax.
<<name>>
The entire virtual event pattern is surrounded by double angle brackets. Inside the angle brackets is the user-defined name of the virtual event. Modifiers, such as Shift or Control, may not be combined with a virtual event to modify it. Bindings on a virtual event may be created before the virtual event is defined, and if the definition of a virtual event changes dynamically, all windows bound to that virtual event will respond immediately to the new definition. Some widgets (e.g. menu and text) issue virtual events when their internal state is updated in some ways. Please see the documentation for each widget for details.
$(PARAM_TABLE $(PARAM_ROW <Alt>, The Alt key.) $(PARAM_ROW <Button1> $(BR) <B1>, Mouse button one.) $(PARAM_ROW <Button2> $(BR) <B2>, Mouse button two.) $(PARAM_ROW <Button3> $(BR) <B3>, Mouse button three.) $(PARAM_ROW <Button3> $(BR) <B5>, Mouse button five.) $(PARAM_ROW <Button4> $(BR) <B4>, Mouse button four.) $(PARAM_ROW <Control>, The Ctrl key.) $(PARAM_ROW <Double>, Modifier for doing something twice.) $(PARAM_ROW <Extended>, Extended keyboard support.) $(PARAM_ROW <Lock>, Unknown.) $(PARAM_ROW <Meta> $(BR) <M>, The meta key.) $(PARAM_ROW <Mod1> $(BR) <M1> $(BR) <Command>, First modifier key.) $(PARAM_ROW <Mod2> $(BR) <M2> $(BR) <Option>, Second modifier key.) $(PARAM_ROW <Mod3> $(BR) <M3>, Third modifier key.) $(PARAM_ROW <Mod4> $(BR) <M4>, Fourth modifier key.) $(PARAM_ROW <Mod5> $(BR) <M5>, Fifth modifier key.) $(PARAM_ROW <Quadruple>, Modifier for doing something four times.) $(PARAM_ROW <Shift>, The Shift key.) $(PARAM_ROW <Triple>, Modifier for doing something three times.) )
Where more than one value is listed, the values are equivalent. Most of the modifiers have the obvious meanings. For example, Button1 requires that button 1 be depressed when the event occurs. For a binding to match a given event, the modifiers in the event must include all of those specified in the event pattern. An event may also contain additional modifiers not specified in the binding. For example, if button 1 is pressed while the shift and control keys are down, the pattern <Control-Button-1> will match the event, but <Mod1-Button-1> will not. If no modifiers are specified, then any combination of modifiers may be present in the event.
Meta and M refer to whichever of the M1 through M5 modifiers is associated with the Meta key(s) on the keyboard. If there are no Meta keys, or if they are not associated with any modifiers, then Meta and M will not match any events. Similarly, the Alt modifier refers to whichever modifier is associated with the alt key(s) on the keyboard.
The Double, Triple and Quadruple modifiers are a convenience for specifying double mouse clicks and other repeated events. They cause a particular event pattern to be repeated 2, 3 or 4 times, and also place a time and space requirement on the sequence: for a sequence of events to match a Double, Triple or Quadruple pattern, all of the events must occur close together in time and without substantial mouse motion in between. For example, <Double-Button-1> is equivalent to <Button-1><Button-1> with the extra time and space requirement.
The Command and Option modifiers correspond to Macintosh-specific modifier keys.
The Extended modifier is, at present, specific to Windows. It appears on events that are associated with the keys on the 'extended keyboard'. On a US keyboard, the extended keys include the Alt and Control keys at the right of the keyboard, the cursor keys in the cluster to the left of the numeric pad, the NumLock key, the Break key, the PrintScreen key, and the / and Enter keys in the numeric keypad.
$(PARAM_TABLE $(PARAM_ROW <Activate> $(BR) <Deactivate>, These two events are sent to every sub-window of a toplevel when they change state. In addition to the focus Window the Macintosh platform and Windows platforms have a notion of an active window (which often has but is not required to have the focus). On the Macintosh widgets in the active window have a different appearance than widgets in deactive windows. The Activate event is sent to all the sub-windows in a toplevel when it changes from being deactive to active. Likewise the Deactive event is sent when the window's state changes from active to deactive. There are no useful percent substitutions you would make when binding to these events.) $(PARAM_ROW <MouseWheel>, Some mice on the Windows platform support a mouse wheel which is used for scrolling documents without using the scrollbars. By rolling the wheel the system will generate MouseWheel events that the application can use to scroll. On Windows the event is always routed to the window that currently has focus (like Key events.) On Mac OS X the event is routed to the window under the pointer. When the event is received you can use the %D substitution to get the delta field for the event which is a integer value describing how the mouse wheel has moved. The smallest value for which the system will report is defined by the OS. On Windows 95 & 98 machines this value is at least 120 before it is reported. However higher resolution devices may be available in the future. On Mac OS X the value is not scaled by 120 but a value of 1 corresponds to roughly one text line. The sign of the value determines which direction your widget should scroll. Positive values should scroll up and negative values should scroll down.) $(PARAM_ROW <KeyPress> $(BR) <KeyRelease>, The KeyPress and KeyRelease events are generated whenever a key is pressed or released. KeyPress and KeyRelease events are sent to the UI element which currently has the keyboard focus.) $(PARAM_ROW <ButtonPress> $(BR) <ButtonRelease> $(BR) <Motion>, The ButtonPress and ButtonRelease events are generated when the user presses or releases a mouse button. Motion events are generated whenever the pointer is moved. ButtonPress ButtonRelease and Motion events are normally sent to the window containing the pointer. When a mouse button is pressed the window containing the pointer automatically obtains a temporary pointer grab. Subsequent ButtonPress ButtonRelease and Motion events will be sent to that window regardless of which window contains the pointer until all buttons have been released.) $(PARAM_ROW <Configure>, A Configure event is sent to a window whenever its size position or border width changes and sometimes when it has changed position in the stacking order.) $(PARAM_ROW <Map> $(BR) <Unmap>, The Map and Unmap events are generated whenever the mapping state of a window changes. Windows are created in the unmapped state. Top-level windows become mapped when they transition to the normal state and are unmapped in the withdrawn and iconic states. Other windows become mapped when they are placed under control of a geometry manager (for example pack or grid). A window is viewable only if it and all of its ancestors are mapped. Note that geometry managers typically do not map their children until they have been mapped themselves and unmap all children when they become unmapped; hence in Tk Map and Unmap events indicate whether or not a window is viewable.) $(PARAM_ROW <Visibility>, A window is said to be obscured when another window above it in the stacking order fully or partially overlaps it. Visibility events are generated whenever a window's obscurity state changes; the state field (%s) specifies the new state.) $(PARAM_ROW <Expose>, An Expose event is generated whenever all or part of a window should be redrawn (for example when a window is first mapped or if it becomes unobscured). It is normally not necessary for client applications to handle Expose events since Tk handles them internally.) $(PARAM_ROW <Destroy>, A Destroy event is delivered to a window when it is destroyed. When the Destroy event is delivered to a widget it is in a 'half-dead' state: the widget still exists but most operations on it will fail.) $(PARAM_ROW <FocusIn> $(BR) <FocusOut>, The FocusIn and FocusOut events are generated whenever the keyboard focus changes. A FocusOut event is sent to the old focus window and a FocusIn event is sent to the new one. In addition if the old and new focus windows do not share a common parent 'virtual crossing' focus events are sent to the intermediate windows in the hierarchy. Thus a FocusIn event indicates that the target window or one of its descendants has acquired the focus and a FocusOut event indicates that the focus has been changed to a window outside the target window's hierarchy. The keyboard focus may be changed explicitly by a call to focus or implicitly by the window manager.) $(PARAM_ROW <Enter> $(BR) <Leave>, An Enter event is sent to a window when the pointer enters that window and a Leave event is sent when the pointer leaves it. If there is a pointer grab in effect Enter and Leave events are only delivered to the window owning the grab. In addition when the pointer moves between two windows Enter and Leave 'virtual crossing' events are sent to intermediate windows in the hierarchy in the same manner as for FocusIn and FocusOut events.) $(PARAM_ROW <Property>, A Property event is sent to a window whenever an X property belonging to that window is changed or deleted. Property events are not normally delivered to Tk applications as they are handled by the Tk core.) $(PARAM_ROW <Colormap>, A Colormap event is generated whenever the colormap associated with a window has been changed installed or uninstalled. Widgets may be assigned a private colormap by specifying a -colormap option; the window manager is responsible for installing and uninstalling colormaps as necessary.) $(PARAM_ROW <CirculateRequest> $(BR) <ConfigureRequest> $(BR) <Create> $(BR) <MapRequest> $(BR) <ResizeRequest>, A Colormap event is generated whenever the colormap associated with a window has been changed installed or uninstalled. Widgets may be assigned a private colormap by specifying a -colormap option; the window manager is responsible for installing and uninstalling colormaps as necessary. Note that Tk provides no useful details for this event type.) $(PARAM_ROW <Circulate> $(BR) <Gravity> $(BR) <Reparent>, The events Gravity and Reparent are not normally delivered to Tk applications. They are included for completeness. A Circulate event indicates that the window has moved to the top or to the bottom of the stacking order as a result of an XCirculateSubwindows protocol request. Note that the stacking order may be changed for other reasons which do not generate a Circulate event, and that Tk does not use XCirculateSubwindows() internally. This event type is included only for completeness; there is no reliable way to track changes to a window's position in the stacking order.) )
The last part of a long event specification is detail. In the case of a ButtonPress or ButtonRelease event, it is the number of a button (1-5). If a button number is given, then only an event on that particular button will match; if no button number is given, then an event on any button will match. Note: giving a specific button number is different than specifying a button modifier; in the first case, it refers to a button being pressed or released, while in the second it refers to some other button that is already depressed when the matching event occurs. If a button number is given then type may be omitted; if will default to ButtonPress. For example, the specifier <1> is equivalent to <ButtonPress-1>.
If the event type is KeyPress or KeyRelease, then detail may be specified in the form of an X keysym. Keysyms are textual specifications for particular keys on the keyboard; they include all the alphanumeric ASCII characters (e.g. “a” is the keysym for the ASCII character “a”), plus descriptions for non-alphanumeric characters (“comma”is the keysym for the comma character), plus descriptions for all the non-ASCII keys on the keyboard (e.g. “Shift_L” is the keysym for the left shift key, and “F1” is the keysym for the F1 function key, if it exists). The complete list of keysyms is not presented here; it is available in other X documentation and may vary from system to system. If a keysym detail is given, then the type field may be omitted; it will default to KeyPress. For example, <Control-comma> is equivalent to <Control-KeyPress-comma>.
The following are built-in virtual events for the purposes of notification:
$(PARAM_TABLE $(PARAM_ROW <<AltUnderlined>>, This is sent to widget to notify it that the letter it has underlined (as an accelerator indicator) with the -underline option has been pressed in combination with the Alt key. The usual response to this is to either focus into the widget (or some related widget) or to invoke the widget.) $(PARAM_ROW <<Invoke>>, This can be sent to some widgets (e.g. button, listbox, menu) as an alternative to <space>.) $(PARAM_ROW <<ListboxSelect>>, This is sent to a listbox when the set of selected item(s) in the listbox is updated.) $(PARAM_ROW <<MenuSelect>>, This is sent to a menu when the currently selected item in the menu changes. It is intended for use with context-sensitive help systems.) $(PARAM_ROW <<Modified>>, This is sent to a text widget when the contents of the widget are changed.) $(PARAM_ROW <<Selection>>, This is sent to a text widget when the selection in the widget is changed.) $(PARAM_ROW <<ThemeChanged>>, This is sent to a text widget when the ttk (Tile) theme changed.) $(PARAM_ROW <<TraverseIn>>, This is sent to a widget when the focus enters the widget because of a user-driven “tab to widget” action.) $(PARAM_ROW <<TraverseOut>>, This is sent to a widget when the focus leaves the widget because of a user-driven “tab to widget” action.) )
The following are built-in virtual events for the purposes of unifying bindings across multiple platforms.
$(PARAM_TABLE $(PARAM_ROW <<Clear>>, Delete the currently selected widget contents.) $(PARAM_ROW <<Copy>>, Copy the currently selected widget contents to the clipboard.) $(PARAM_ROW <<Cut>>, Move the currently selected widget contents to the clipboard.) $(PARAM_ROW <<LineEnd>>, Move to the end of the line in the current widget while deselecting any selected contents.) $(PARAM_ROW <<LineStart>>, Move to the start of the line in the current widget while deselecting any selected contents.) $(PARAM_ROW <<NextChar>>, Move to the next item (i.e., visible character) in the current widget while deselecting any selected contents.) $(PARAM_ROW <<NextLine>>, Move to the next line in the current widget while deselecting any selected contents.) $(PARAM_ROW <<NextPara>>, Move to the next paragraph in the current widget while deselecting any selected contents.) $(PARAM_ROW <<NextWord>>, Move to the next group of items (i.e., visible word) in the current widget while deselecting any selected contents.) $(PARAM_ROW <<Paste>>, Replace the currently selected widget contents with the contents of the clipboard.) $(PARAM_ROW <<PasteSelection>>, Insert the contents of the selection at the mouse location. (This event has meaningful %x and %y substitutions).) $(PARAM_ROW <<PrevChar>>, Move to the previous item (i.e., visible character) in the current widget while deselecting any selected contents.) $(PARAM_ROW <<PrevLine>>, Move to the previous line in the current widget while deselecting any selected contents.) $(PARAM_ROW <<PrevPara>>, Move to the previous paragraph in the current widget while deselecting any selected contents.) $(PARAM_ROW <<PrevWindow>>, Traverse to the previous window.) $(PARAM_ROW <<PrevWord>>, Move to the previous group of items (i.e., visible word) in the current widget while deselecting any selected contents.) $(PARAM_ROW <<Redo>>, Redo one undone action.) $(PARAM_ROW <<SelectAll>>, Set the range of selected contents to the complete widget.) $(PARAM_ROW <<SelectLineEnd>>, Move to the end of the line in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectLineStart>>, Move to the start of the line in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectNextChar>>, Move to the next item (i.e., visible character) in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectNextLine>>, Move to the next line in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectNextPara>>, Move to the next paragraph in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectNextWord>>, Move to the next group of items (i.e., visible word) in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectNone>>, Reset the range of selected contents to be empty.) $(PARAM_ROW <<SelectPrevChar>>, Move to the previous item (i.e., visible character) in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectPrevLine>>, Move to the previous line in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectPrevPara>>, Move to the previous paragraph in the current widget while extending the range of selected contents.) $(PARAM_ROW <<SelectPrevWord>>, Move to the previous group of items (i.e., visible word) in the current widget while extending the range of selected contents.) $(PARAM_ROW <<ToggleSelection>>, Toggle the selection.) $(PARAM_ROW <<Undo>>, Undo the last action.) )
These are the fields within the callback's CommandArgs parameter which are populated by this method when the callback is executed.
$(PARAM_TABLE $(PARAM_ROW CommandArgs.element, The element that executed the callback.) $(PARAM_ROW CommandArgs.uniqueData, The binding that was responded to.) $(PARAM_ROW CommandArgs.callback, The callback which was executed.) $(PARAM_ROW CommandArgs.event.button, The number of any button that was pressed.) $(PARAM_ROW CommandArgs.event.keyCode, The key code of any key pressed.) $(PARAM_ROW CommandArgs.event.x, The horizontal position of the mouse relative to the widget.) $(PARAM_ROW CommandArgs.event.y, The vertical position of the mouse relative to the widget.) $(PARAM_ROW CommandArgs.event.wheel, Mouse wheel delta.) $(PARAM_ROW CommandArgs.event.key, Key symbol of any key pressed.) $(PARAM_ROW CommandArgs.event.screenX, The horizontal position of the mouse relative to the screen.) $(PARAM_ROW CommandArgs.event.screenY, The vertical position of the mouse relative to the screen.) )
Bind a callback to a particular event triggered by this element.