- Up - | Next >> |
actions
Button widgets are similar to label widgets: they display text, bitmaps, or images. Additionally, they provide for actions: pressing the mouse button over the button widget, invokes an action. An action is either a procedure or a pair of object and message. If the action is a procedure, pressing the widget button creates a thread in which the procedure is applied. Otherwise, a thread is created that applies the object to the message provided. Actions are discussed in more detail in Section 5.6.
Figure 5.1 shows a program which creates two buttons and attaches actions to them. Pressing button B1
browses the atom pressed
, whereas pressing button B2
closes the toplevel widget object T
.
B1={New Tk.button tkInit(parent: W
text: 'Press me!'
action: proc {$}
{Browse pressed}
end)}
B2={New Tk.button tkInit(parent: W
bitmap: error
action: W#tkClose)}
{Tk.send pack(B1 B2 fill:x padx:1#m pady:1#m)}
action values
The action
option is different from other options in that it has not a generic translation as explained in Section 3.2. Valid values for this option are not tickles, but as already mentioned, procedures or object message pairs.
Internally, an object providing for the action
option, creates a Tcl script which when executed invokes the Oz procedure or object. This script is used then as value for the configuration option command
. All widgets which provide for the command
option in Tk, provide for the action
option in Oz.
changing actions
Actions can be deleted or changed by the method tkAction
. For example, deleting the action for button B1
and changing the action for B2
can be done by executing:
{B1 tkAction}
{B2 tkAction(action: B1 # tkClose)}
More information on buttons can be found in button.
- Up - | Next >> |