| Previous Widgets 2 |
Tcl/Tk Tutorial Widgets 3 |
Next Widgets 4 |
| -command COMMAND | Specifies a Tcl command to associate with the button. This command is typically invoked when mouse button 1 is released over the button window. |
| -variable VARIABLE | Specifies name of global variable to set to indicate whether or not this button is selected. |
| -value VALUE | Specifies value to store in the button's associated variable whenever this button is selected. |
| Syntax | Description | Example |
| path deselect | Deselects the checkbutton and sets the associated variable to its ``off'' value. | .rdb_m deselect |
| path select | Selects the checkbutton and sets the associated variable to its ``on'' value. | .rdb_m select |
#This function will be exected when the button is pushed
proc push_button {} {
global age gender
set name [.ent get]
.txt insert end "$name\($gender\) is $age years old."
}
#Global Variables
set age 10
set gender "Male"
#GUI building
frame .frm_name
label .lab -text "Name:"
entry .ent
#Age
scale .scl -label "Age :" -orient h -digit 1 -from 10 -to 50 \
-variable age -tickinterval 10
#Gender
frame .gender
label .lbl_gender -text "Sex "
radiobutton .gender.rdb_m -text "Male" -variable gender -value "Male"
radiobutton .gender.rdb_f -text "Female" -variable gender -value "Female"
.gender.rdb_m select
button .but -text "Push Me" -command "push_button"
#Text Area
frame .textarea
text .txt -yscrollcommand ".srl_y set" -xscrollcommand ".srl_x set" \
-width 40 -height 10
scrollbar .srl_y -command ".txt yview" -orient v
scrollbar .srl_x -command ".txt xview" -orient h
#Geometry Management
grid .frm_name -in . -row 1 -column 1 -columnspan 2
grid .lab -in .frm_name -row 1 -column 1
grid .ent -in .frm_name -row 1 -column 2
grid .scl -in . -row 2 -column 1 -columnspan 2
grid .gender -in . -row 3 -column 2
grid .lbl_gender -in .gender -row 1 -column 1
grid .gender.rdb_m -in .gender -row 1 -column 2
grid .gender.rdb_f -in .gender -row 1 -column 3
grid .but -in . -row 4 -column 1 -columnspan 2
grid .txt -in .textarea -row 1 -column 1
grid .srl_y -in .textarea -row 1 -column 2 -sticky ns
grid .srl_x -in .textarea -row 2 -column 1 -sticky ew
grid .textarea -in . -row 5 -column 1 -columnspan 2
This time the program is subjected to even more change - the geometry manager is fully grid now. There is no instances of pack. You will find this necessary when the layout becomes more complicated. I hope you can stay with me in such trying times.
| -offvalue VALUE | Specifies value to store in the button's associated variable whenever this button is deselected. Defaults to ``0''. |
| -onvalue VALUE | Specifies value to store in the button's associated variable whenever this button is selected. Defaults to ``1''. |
| -command COMMAND | Specifies a Tcl command to associate with the button. This command is typically invoked when mouse button 1 is released over the button window. |
| -variable VARABLE | Specifies name of global variable to set to indicate whether or not this button is selected. |
| Syntax | Description | Example |
| path deselect | Deselects the checkbutton and sets the associated variable to its ``off'' value. | .chk deselect |
| path select | Selects the checkbutton and sets the associated variable to its ``on'' value. | .chk select |
| path toggle | Toggles the selection state of the button, redisplaying it and modifying its associated variable to reflect the new state. | .chk toggle |
#This function will be executed when the button is pushed
proc push_button {} {
global age occupied gender
set name [.ent get]
.txt insert end "$name\($gender\) is $age years old and is "
if { $occupied == 1 } {
.txt insert end "occupied."
} else {
.txt insert end "unemployed."
}
}
#Global Variables
set age 10
set occupied 1
set gender "Male"
#GUI building
frame .frm_name
label .lab -text "Name:"
entry .ent
#Age
scale .scl -label "Age :" -orient h -digit 1 -from 10 -to 50 \
-variable age -tickinterval 10
checkbutton .chk -text "Occupied" -variable occupied
#Gender
frame .gender
label .lbl_gender -text "Sex "
radiobutton .gender.rdb_m -text "Male" -variable gender -value "Male"
radiobutton .gender.rdb_f -text "Female" -variable gender -value "Female"
.gender.rdb_m select
button .but -text "Push Me" -command "push_button"
#Text Area
frame .textarea
text .txt -yscrollcommand ".srl_y set" -xscrollcommand ".srl_x set" \
-width 40 -height 10
scrollbar .srl_y -command ".txt yview" -orient v
scrollbar .srl_x -command ".txt xview" -orient h
#Geometry Management
grid .frm_name -in . -row 1 -column 1 -columnspan 2
grid .lab -in .frm_name -row 1 -column 1
grid .ent -in .frm_name -row 1 -column 2
grid .scl -in . -row 2 -column 1
grid .chk -in . -row 2 -column 2
grid .gender -in . -row 3 -column 2
grid .lbl_gender -in .gender -row 1 -column 1
grid .gender.rdb_m -in .gender -row 1 -column 2
grid .gender.rdb_f -in .gender -row 1 -column 3
grid .but -in . -row 4 -column 1 -columnspan 2
grid .txt -in .textarea -row 1 -column 1
grid .srl_y -in .textarea -row 1 -column 2 -sticky ns
grid .srl_x -in .textarea -row 2 -column 1 -sticky ew
grid .textarea -in . -row 5 -column 1 -columnspan 2
| Previous Widgets 2 |
Contents | Next Widgets 4 |