spinbox.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:25k
- '"
- '" Copyright (c) 2000 Jeffrey Hobbs.
- '" Copyright (c) 2000 Ajuba Solutions.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: spinbox.n,v 1.3.2.1 2004/10/28 12:25:22 dkf Exp $
- '"
- .so man.macros
- .TH spinbox n 8.4 Tk "Tk Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- spinbox - Create and manipulate spinbox widgets
- .SH SYNOPSIS
- fBspinboxfR fIpathName fR?fIoptionsfR?
- .SO
- -activebackground -highlightthickness -repeatinterval
- -background -insertbackground -selectbackground
- -borderwidth -insertborderwidth -selectborderwidth
- -cursor -insertontime -selectforeground
- -exportselection -insertwidth -takefocus
- -font -insertofftime -textvariable
- -foreground -justify -xscrollcommand
- -highlightbackground -relief
- -highlightcolor -repeatdelay
- .SE
- .SH "WIDGET-SPECIFIC OPTIONS"
- .OP -buttonbackground buttonBackground Background
- The background color to be used for the spin buttons.
- .OP -buttoncursor buttonCursor Cursor
- The cursor to be used when over the spin buttons. If this is empty
- (the default), a default cursor will be used.
- .OP -buttondownrelief buttonDownRelief Relief
- The relief to be used for the upper spin button.
- .OP -buttonuprelief buttonUpRelief Relief
- The relief to be used for the lower spin button.
- .OP -command command Command
- Specifies a Tcl command to invoke whenever a spinbutton is invoked.
- The command recognizes several percent substitutions: fB%WfR for
- the widget path, fB%sfR for the current value of the widget, and
- fB%dfR for the direction of the button pressed (fBupfR or fBdownfR).
- .OP -disabledbackground disabledBackground DisabledBackground
- Specifies the background color to use when the spinbox is disabled. If
- this option is the empty string, the normal background color is used.
- .OP -disabledforeground disabledForeground DisabledForeground
- Specifies the foreground color to use when the spinbox is disabled. If
- this option is the empty string, the normal foreground color is used.
- .OP -format format Format
- Specifies an alternate format to use when setting the string value
- when using the fB-fromfR and fB-tofR range.
- This must be a format specifier of the form fB%<pad>.<pad>ffR,
- as it will format a floating-point number.
- .OP -from from From
- A floating-point value corresponding to the lowest value for a spinbox, to
- be used in conjunction with fB-tofR and fB-incrementfR. When all
- are specified correctly, the spinbox will use these values to control its
- contents. This value must be less than the fB-tofR option.
- If fB-valuesfR is specified, it supercedes this option.
- .OP "-invalidcommand or -invcmd" invalidCommand InvalidCommand
- Specifies a script to eval when fBvalidateCommandfR returns 0. Setting
- it to an empty string disables this feature (the default). The best use of
- this option is to set it to fIbellfR. See fBValidationfR below for
- more information.
- .OP -increment increment Increment
- A floating-point value specifying the increment. When used with
- fB-fromfR and fB-tofR, the value in the widget will be adjusted by
- fB-incrementfR when a spin button is pressed (up adds the value,
- down subtracts the value).
- .OP -readonlybackground readonlyBackground ReadonlyBackground
- Specifies the background color to use when the spinbox is readonly. If
- this option is the empty string, the normal background color is used.
- .OP -state state State
- Specifies one of three states for the spinbox: fBnormalfR,
- fBdisabledfR, or fBreadonlyfR. If the spinbox is readonly, then the
- value may not be changed using widget commands and no insertion cursor
- will be displayed, even if the input focus is in the widget; the
- contents of the widget may still be selected. If the spinbox is
- disabled, the value may not be changed, no insertion cursor will be
- displayed, the contents will not be selectable, and the spinbox may
- be displayed in a different color, depending on the values of the
- fB-disabledforegroundfR and fB-disabledbackgroundfR options.
- .OP -to to To
- A floating-point value corresponding to the highest value for the spinbox,
- to be used in conjunction with fB-fromfR and fB-incrementfR. When
- all are specified correctly, the spinbox will use these values to control
- its contents. This value must be greater than the fB-fromfR option.
- If fB-valuesfR is specified, it supercedes this option.
- .OP -validate validate Validate
- Specifies the mode in which validation should operate: fBnonefR,
- fBfocusfR, fBfocusinfR, fBfocusoutfR, fBkeyfR, or fBallfR.
- It defaults to fBnonefR. When you want validation, you must explicitly
- state which mode you wish to use. See fBValidationfR below for more.
- .OP "-validatecommand or -vcmd" validateCommand ValidateCommand
- Specifies a script to evaluate when you want to validate the input in the
- widget. Setting it to an empty string disables this feature (the default).
- Validation occurs according to the value of fB-validatefR.
- This command must return a valid Tcl boolean value. If it returns 0 (or
- the valid Tcl boolean equivalent) then the value of the widget will not
- change and the fBinvalidCommandfR will be evaluated if it is set. If it
- returns 1, then value will be changed.
- See fBValidationfR below for more information.
- .OP -values values Values
- Must be a proper list value. If specified, the spinbox will use these
- values as to control its contents, starting with the first value. This
- option has precedence over the fB-fromfR and fB-tofR range.
- .OP -width width Width
- Specifies an integer value indicating the desired width of the spinbox window,
- in average-size characters of the widget's font.
- If the value is less than or equal to zero, the widget picks a
- size just large enough to hold its current text.
- .OP -wrap wrap wrap
- Must be a proper boolean value. If on, the spinbox will wrap around the
- values of data in the widget.
- .BE
- .SH DESCRIPTION
- .PP
- The fBspinboxfR command creates a new window (given by the
- fIpathNamefR argument) and makes it into a spinbox widget.
- Additional options, described above, may be specified on the
- command line or in the option database
- to configure aspects of the spinbox such as its colors, font,
- and relief. The fBspinboxfR command returns its
- fIpathNamefR argument. At the time this command is invoked,
- there must not exist a window named fIpathNamefR, but
- fIpathNamefR's parent must exist.
- .PP
- A fBspinboxfR is an extended fBentryfR widget that allows he user
- to move, or spin, through a fixed set of ascending or descending values
- such as times or dates in addition to editing the value as in an
- fBentryfR. When first created, a spinbox's string is empty.
- A portion of the spinbox may be selected as described below.
- If a spinbox is exporting its selection (see the fBexportSelectionfR
- option), then it will observe the standard protocols for handling the
- selection; spinbox selections are available as type fBSTRINGfR.
- Spinboxes also observe the standard Tk rules for dealing with the
- input focus. When a spinbox has the input focus it displays an
- fIinsertion cursorfR to indicate where new characters will be
- inserted.
- .PP
- Spinboxes are capable of displaying strings that are too long to
- fit entirely within the widget's window. In this case, only a
- portion of the string will be displayed; commands described below
- may be used to change the view in the window. Spinboxes use
- the standard fBxScrollCommandfR mechanism for interacting with
- scrollbars (see the description of the fBxScrollCommandfR option
- for details). They also support scanning, as described below.
- .SH VALIDATION
- .PP
- Validation works by setting the fBvalidateCommandfR
- option to a script which will be evaluated according to the fBvalidatefR
- option as follows:
- .PP
- .IP fBnonefR 10
- Default. This means no validation will occur.
- .IP fBfocusfR 10
- fBvalidateCommandfR will be called when the spinbox receives or
- loses focus.
- .IP fBfocusinfR 10
- fBvalidateCommandfR will be called when the spinbox receives focus.
- .IP fBfocusoutfR 10
- fBvalidateCommandfR will be called when the spinbox loses focus.
- .IP fBkeyfR 10
- fBvalidateCommandfR will be called when the spinbox is edited.
- .IP fBallfR 10
- fBvalidateCommandfR will be called for all above conditions.
- .PP
- It is possible to perform percent substitutions on the fBvalidateCommandfR
- and fBinvalidCommandfR, just as you would in a fBbindfR script. The
- following substitutions are recognized:
- .PP
- .IP fB%dfR 5
- Type of action: 1 for fBinsertfR, 0 for fBdeletefR,
- or -1 for focus, forced or textvariable validation.
- .IP fB%ifR 5
- Index of char string to be inserted/deleted, if any, otherwise -1.
- .IP fB%PfR 5
- The value of the spinbox should edition occur. If you are configuring the
- spinbox widget to have a new textvariable, this will be the value of that
- textvariable.
- .IP fB%sfR 5
- The current value of spinbox before edition.
- .IP fB%SfR 5
- The text string being inserted/deleted, if any.
- Otherwise it is an empty string.
- .IP fB%vfR 5
- The type of validation currently set.
- .IP fB%VfR 5
- The type of validation that triggered the callback
- (key, focusin, focusout, forced).
- .IP fB%WfR 5
- The name of the spinbox widget.
- .PP
- In general, the fBtextVariablefR and fBvalidateCommandfR can be
- dangerous to mix. Any problems have been overcome so that using the
- fBvalidateCommandfR will not interfere with the traditional behavior of
- the spinbox widget. Using the fBtextVariablefR for read-only purposes will
- never cause problems. The danger comes when you try set the
- fBtextVariablefR to something that the fBvalidateCommandfR would not
- accept, which causes fBvalidatefR to become fInonefR (the
- fBinvalidCommandfR will not be triggered). The same happens
- when an error occurs evaluating the fBvalidateCommandfR.
- .PP
- Primarily, an error will occur when the fBvalidateCommandfR or
- fBinvalidCommandfR encounters an error in its script while evaluating or
- fBvalidateCommandfR does not return a valid Tcl boolean value. The
- fBvalidatefR option will also set itself to fBnonefR when you edit the
- spinbox widget from within either the fBvalidateCommandfR or the
- fBinvalidCommandfR. Such editions will override the one that was being
- validated. If you wish to edit the value of the widget
- during validation and still have the fBvalidatefR option set, you should
- include the command
- .CS
- fI%W config -validate %vfR
- .CE
- in the fBvalidateCommandfR or fBinvalidCommandfR (whichever one you
- were editing the spinbox widget from). It is also recommended to not set an
- associated fBtextVariablefR during validation, as that can cause the
- spinbox widget to become out of sync with the fBtextVariablefR.
- .SH "WIDGET COMMAND"
- .PP
- The fBspinboxfR command creates a new Tcl command whose
- name is fIpathNamefR. This command may be used to invoke various
- operations on the widget. It has the following general form:
- .CS
- fIpathName option fR?fIarg arg ...fR?
- .CE
- fIOptionfR and the fIargfRs
- determine the exact behavior of the command.
- .PP
- Many of the widget commands for spinboxes take one or more indices as
- arguments. An index specifies a particular character in the spinbox's
- string, in any of the following ways:
- .TP 12
- fInumberfR
- Specifies the character as a numerical index, where 0 corresponds
- to the first character in the string.
- .TP 12
- fBanchorfR
- Indicates the anchor point for the selection, which is set with the
- fBselect fromfR and fBselect adjustfR widget commands.
- .TP 12
- fBendfR
- Indicates the character just after the last one in the spinbox's string.
- This is equivalent to specifying a numerical index equal to the length
- of the spinbox's string.
- .TP 12
- fBinsertfR
- Indicates the character adjacent to and immediately following the
- insertion cursor.
- .TP 12
- fBsel.firstfR
- Indicates the first character in the selection. It is an error to
- use this form if the selection isn't in the spinbox window.
- .TP 12
- fBsel.lastfR
- Indicates the character just after the last one in the selection.
- It is an error to use this form if the selection isn't in the
- spinbox window.
- .TP 12
- fB@fInumberfR
- In this form, fInumberfR is treated as an x-coordinate in the
- spinbox's window; the character spanning that x-coordinate is used.
- For example, ``fB@0fR'' indicates the left-most character in the
- window.
- .LP
- Abbreviations may be used for any of the forms above, e.g. ``fBefR''
- or ``fBsel.ffR''. In general, out-of-range indices are automatically
- rounded to the nearest legal value.
- .PP
- The following commands are possible for spinbox widgets:
- .TP
- fIpathName fBbbox fIindexfR
- Returns a list of four numbers describing the bounding box of the
- character given by fIindexfR.
- The first two elements of the list give the x and y coordinates of
- the upper-left corner of the screen area covered by the character
- (in pixels relative to the widget) and the last two elements give
- the width and height of the character, in pixels.
- The bounding box may refer to a region outside the visible area
- of the window.
- .TP
- fIpathName fBcgetfR fIoptionfR
- Returns the current value of the configuration option given
- by fIoptionfR.
- fIOptionfR may have any of the values accepted by the fBspinboxfR
- command.
- .TP
- fIpathName fBconfigurefR ?fIoptionfR? ?fIvalue option value ...fR?
- Query or modify the configuration options of the widget.
- If no fIoptionfR is specified, returns a list describing all of
- the available options for fIpathNamefR (see fBTk_ConfigureInfofR for
- information on the format of this list). If fIoptionfR is specified
- with no fIvaluefR, then the command returns a list describing the
- one named option (this list will be identical to the corresponding
- sublist of the value returned if no fIoptionfR is specified). If
- one or more fIoption-valuefR pairs are specified, then the command
- modifies the given widget option(s) to have the given value(s); in
- this case the command returns an empty string.
- fIOptionfR may have any of the values accepted by the fBspinboxfR
- command.
- .TP
- fIpathName fBdelete fIfirst fR?fIlastfR?
- Delete one or more elements of the spinbox.
- fIFirstfR is the index of the first character to delete, and
- fIlastfR is the index of the character just after the last
- one to delete.
- If fIlastfR isn't specified it defaults to fIfirstfR+1,
- i.e. a single character is deleted.
- This command returns an empty string.
- .TP
- fIpathName fBgetfR
- Returns the spinbox's string.
- .TP
- fIpathName fBicursor fIindexfR
- Arrange for the insertion cursor to be displayed just before the character
- given by fIindexfR. Returns an empty string.
- .TP
- fIpathName fBidentifyfI x yfR
- Returns the name of the window element corresponding to coordinates
- fIxfR and fIyfR in the spinbox. Return value is one of:
- fBnonefR, fBbuttondownfR, fBbuttonupfR, fBentryfR.
- .TP
- fIpathName fBindexfI indexfR
- Returns the numerical index corresponding to fIindexfR.
- .TP
- fIpathName fBinsert fIindex stringfR
- Insert the characters of fIstringfR just before the character
- indicated by fIindexfR. Returns an empty string.
- .TP
- fIpathName fBinvokefI elementfR
- Causes the specified element, either fBbuttondownfR or fBbuttonupfR,
- to be invoked, triggering the action associated with it.
- .TP
- fIpathName fBscanfR fIoption argsfR
- This command is used to implement scanning on spinboxes. It has
- two forms, depending on fIoptionfR:
- .RS
- .TP
- fIpathName fBscan mark fIxfR
- Records fIxfR and the current view in the spinbox window; used in
- conjunction with later fBscan dragtofR commands. Typically this
- command is associated with a mouse button press in the widget. It
- returns an empty string.
- .TP
- fIpathName fBscan dragto fIxfR
- This command computes the difference between its fIxfR argument
- and the fIxfR argument to the last fBscan markfR command for
- the widget. It then adjusts the view left or right by 10 times the
- difference in x-coordinates. This command is typically associated
- with mouse motion events in the widget, to produce the effect of
- dragging the spinbox at high speed through the window. The return
- value is an empty string.
- .RE
- .TP
- fIpathName fBselection fIoption argfR
- This command is used to adjust the selection within a spinbox. It
- has several forms, depending on fIoptionfR:
- .RS
- .TP
- fIpathName fBselection adjust fIindexfR
- Locate the end of the selection nearest to the character given by
- fIindexfR, and adjust that end of the selection to be at fIindexfR
- (i.e. including but not going beyond fIindexfR). The other
- end of the selection is made the anchor point for future
- fBselect tofR commands. If the selection
- isn't currently in the spinbox, then a new selection is created to
- include the characters between fIindexfR and the most recent
- selection anchor point, inclusive.
- Returns an empty string.
- .TP
- fIpathName fBselection clearfR
- Clear the selection if it is currently in this widget. If the
- selection isn't in this widget then the command has no effect.
- Returns an empty string.
- .TP
- fIpathName fBselection elementfR ?fIelementfR?
- Sets or gets the currently selected element. If a spinbutton element
- is specified, it will be displayed depressed.
- .TP
- fIpathName fBselection from fIindexfR
- Set the selection anchor point to just before the character
- given by fIindexfR. Doesn't change the selection.
- Returns an empty string.
- .TP
- fIpathName fBselection presentfR
- Returns 1 if there is are characters selected in the spinbox,
- 0 if nothing is selected.
- .TP
- fIpathName fBselection range fIstartfR fIendfR
- Sets the selection to include the characters starting with
- the one indexed by fIstartfR and ending with the one just
- before fIendfR.
- If fIendfR refers to the same character as fIstartfR or an
- earlier one, then the spinbox's selection is cleared.
- .TP
- fIpathName fBselection to fIindexfR
- If fIindexfR is before the anchor point, set the selection
- to the characters from fIindexfR up to but not including
- the anchor point.
- If fIindexfR is the same as the anchor point, do nothing.
- If fIindexfR is after the anchor point, set the selection
- to the characters from the anchor point up to but not including
- fIindexfR.
- The anchor point is determined by the most recent fBselect fromfR
- or fBselect adjustfR command in this widget.
- If the selection isn't in this widget then a new selection is
- created using the most recent anchor point specified for the widget.
- Returns an empty string.
- .RE
- .TP
- fIpathName fBsetfR ?fIstringfR?
- If fIstringfR is specified, the spinbox will try and set it to this
- value, otherwise it just returns the spinbox's string.
- If validation is on, it will occur when setting the string.
- .TP
- fIpathName fBvalidatefR
- This command is used to force an evaluation of the fBvalidateCommandfR
- independent of the conditions specified by the fBvalidatefR option.
- This is done by temporarily setting the fBvalidatefR option to fBallfR.
- It returns 0 or 1.
- .TP
- fIpathName fBxview fIargsfR
- This command is used to query and change the horizontal position of the
- text in the widget's window. It can take any of the following
- forms:
- .RS
- .TP
- fIpathName fBxviewfR
- Returns a list containing two elements.
- Each element is a real fraction between 0 and 1; together they describe
- the horizontal span that is visible in the window.
- For example, if the first element is .2 and the second element is .6,
- 20% of the spinbox's text is off-screen to the left, the middle 40% is visible
- in the window, and 40% of the text is off-screen to the right.
- These are the same values passed to scrollbars via the fB-xscrollcommandfR
- option.
- .TP
- fIpathName fBxviewfR fIindexfR
- Adjusts the view in the window so that the character given by fIindexfR
- is displayed at the left edge of the window.
- .TP
- fIpathName fBxview movetofI fractionfR
- Adjusts the view in the window so that the character fIfractionfR of the
- way through the text appears at the left edge of the window.
- fIFractionfR must be a fraction between 0 and 1.
- .TP
- fIpathName fBxview scroll fInumber whatfR
- This command shifts the view in the window left or right according to
- fInumberfR and fIwhatfR.
- fINumberfR must be an integer.
- fIWhatfR must be either fBunitsfR or fBpagesfR or an abbreviation
- of one of these.
- If fIwhatfR is fBunitsfR, the view adjusts left or right by
- fInumberfR average-width characters on the display; if it is
- fBpagesfR then the view adjusts by fInumberfR screenfuls.
- If fInumberfR is negative then characters farther to the left
- become visible; if it is positive then characters farther to the right
- become visible.
- .RE
- .SH "DEFAULT BINDINGS"
- .PP
- Tk automatically creates class bindings for spinboxes that give them
- the following default behavior.
- In the descriptions below, ``word'' refers to a contiguous group
- of letters, digits, or ``_'' characters, or any single character
- other than these.
- .IP [1]
- Clicking mouse button 1 positions the insertion cursor
- just before the character underneath the mouse cursor, sets the
- input focus to this widget, and clears any selection in the widget.
- Dragging with mouse button 1 strokes out a selection between
- the insertion cursor and the character under the mouse.
- .IP [2]
- Double-clicking with mouse button 1 selects the word under the mouse
- and positions the insertion cursor at the beginning of the word.
- Dragging after a double click will stroke out a selection consisting
- of whole words.
- .IP [3]
- Triple-clicking with mouse button 1 selects all of the text in the
- spinbox and positions the insertion cursor before the first character.
- .IP [4]
- The ends of the selection can be adjusted by dragging with mouse
- button 1 while the Shift key is down; this will adjust the end
- of the selection that was nearest to the mouse cursor when button
- 1 was pressed.
- If the button is double-clicked before dragging then the selection
- will be adjusted in units of whole words.
- .IP [5]
- Clicking mouse button 1 with the Control key down will position the
- insertion cursor in the spinbox without affecting the selection.
- .IP [6]
- If any normal printing characters are typed in a spinbox, they are
- inserted at the point of the insertion cursor.
- .IP [7]
- The view in the spinbox can be adjusted by dragging with mouse button 2.
- If mouse button 2 is clicked without moving the mouse, the selection
- is copied into the spinbox at the position of the mouse cursor.
- .IP [8]
- If the mouse is dragged out of the spinbox on the left or right sides
- while button 1 is pressed, the spinbox will automatically scroll to
- make more text visible (if there is more text off-screen on the side
- where the mouse left the window).
- .IP [9]
- The Left and Right keys move the insertion cursor one character to the
- left or right; they also clear any selection in the spinbox and set
- the selection anchor.
- If Left or Right is typed with the Shift key down, then the insertion
- cursor moves and the selection is extended to include the new character.
- Control-Left and Control-Right move the insertion cursor by words, and
- Control-Shift-Left and Control-Shift-Right move the insertion cursor
- by words and also extend the selection.
- Control-b and Control-f behave the same as Left and Right, respectively.
- Meta-b and Meta-f behave the same as Control-Left and Control-Right,
- respectively.
- .IP [10]
- The Home key, or Control-a, will move the insertion cursor to the
- beginning of the spinbox and clear any selection in the spinbox.
- Shift-Home moves the insertion cursor to the beginning of the spinbox
- and also extends the selection to that point.
- .IP [11]
- The End key, or Control-e, will move the insertion cursor to the
- end of the spinbox and clear any selection in the spinbox.
- Shift-End moves the cursor to the end and extends the selection
- to that point.
- .IP [12]
- The Select key and Control-Space set the selection anchor to the position
- of the insertion cursor. They don't affect the current selection.
- Shift-Select and Control-Shift-Space adjust the selection to the
- current position of the insertion cursor, selecting from the anchor
- to the insertion cursor if there was not any selection previously.
- .IP [13]
- Control-/ selects all the text in the spinbox.
- .IP [14]
- Control-e clears any selection in the spinbox.
- .IP [15]
- The F16 key (labelled Copy on many Sun workstations) or Meta-w
- copies the selection in the widget to the clipboard, if there is a selection.
- .IP [16]
- The F20 key (labelled Cut on many Sun workstations) or Control-w
- copies the selection in the widget to the clipboard and deletes
- the selection.
- If there is no selection in the widget then these keys have no effect.
- .IP [17]
- The F18 key (labelled Paste on many Sun workstations) or Control-y
- inserts the contents of the clipboard at the position of the
- insertion cursor.
- .IP [18]
- The Delete key deletes the selection, if there is one in the spinbox.
- If there is no selection, it deletes the character to the right of
- the insertion cursor.
- .IP [19]
- The BackSpace key and Control-h delete the selection, if there is one
- in the spinbox.
- If there is no selection, it deletes the character to the left of
- the insertion cursor.
- .IP [20]
- Control-d deletes the character to the right of the insertion cursor.
- .IP [21]
- Meta-d deletes the word to the right of the insertion cursor.
- .IP [22]
- Control-k deletes all the characters to the right of the insertion
- cursor.
- .IP [23]
- Control-t reverses the order of the two characters to the right of
- the insertion cursor.
- .PP
- If the spinbox is disabled using the fB-statefR option, then the spinbox's
- view can still be adjusted and text in the spinbox can still be selected,
- but no insertion cursor will be displayed and no text modifications will
- take place.
- .PP
- The behavior of spinboxes can be changed by defining new bindings for
- individual widgets or by redefining the class bindings.
- .SH KEYWORDS
- spinbox, entry, widget