<< Prev | - Up - | Next >> |
A scale widget allows to select a number from a certain range by moving a slider. Each time the slider is moved, an action attached to the slider is invoked with a single argument giving the current number value of the slider.
In Figure 5.9 an example is shown which allows to display a color determined by three sliders for the intensity of the base colors red, green, and blue. The object F
stores the intensity for each base color in an attribute. Whenever the method bg
is executed it changes the intensity for one of the base colors and changes the background color to the combination of all three base colors.
L ={New class $ from Tk.listener
attr red:0 green:0 blue:0
meth bg(C I)
C := I {F tk(configure bg:c(@red @green @blue))}
end
end tkInit}
F ={New Tk.frame tkInit(parent:W height:2#c)}
Ss={Map [red green blue]
fun {$ C}
{New Tk.scale tkInit(parent:W orient:horizontal length:8#c
label:C 'from':0 to:255
action: L # bg(C)
args: [int])}
end}
{Tk.send pack(b(Ss) F fill:x)}
The sliders are configured with the label
option to display the name of the base color as their labels. The other options besides of action
and args
are self explanatory, more information on them can be found in scale.
The value for the args
option must be a type specification similar to that used for the specification of argument types in event bindings (see Section 5.5.2. The only difference is that no event argument specification is required. Invoking the action is also similar. For instance, if the scale for the color red
changes its value to 10
, the message bg(red 10)
will eventually be served by the listener L
.
<< Prev | - Up - | Next >> |