From: -X- How, in Tk, can I XXX: A10.F.3. There are at least two ways to do this. First, there is a hypertext widget that one can get from the Tcl User Contributed Code Archive - (See tcl-faq/part4) and (See tcl-faq/part5) for details - which provides such a facility. And here is some sample code from "Michael Moore" <mdm@stegosaur.cis.ohio-state.edu> which shows a way to do this using just Tk. #! /bin/wish -f # # This demonstrates how to create a scrollable canvas with multiple # buttons. # # Author : Michael Moore # Date : November 17, 1992 # # # This procedure obtains all the items with the tag "active" # and prints out their ids. proc multi_action {} { set list [.frame.canvas find withtag "active"] puts stdout "Active Item Ids : " foreach item $list { puts stdout $item } } # # This simulates the toggling of a command button... # Note that it only works on a color display as is right now # but the principle is the same for b&w screens. # proc multi_activate {num id} { set tags [.frame.canvas gettags $id] if {[lsearch $tags "active"] != -1} { .frame.canvas dtag $id "active" .frame.canvas.button$num configure \ -background "#060" \ -activebackground "#080" } else { .frame.canvas addtag "active" withtag $id .frame.canvas.button$num configure \ -background "#600" \ -activebackground "#800" } } proc setup {} { frame .frame scrollbar .frame.scroll \ -command ".frame.canvas yview" \ -relief raised canvas .frame.canvas \ -yscroll ".frame.scroll set" \ -scrollregion {0 0 0 650} \ -relief raised \ -confine false \ -scrollincrement 25 pack append .frame \ .frame.scroll {left frame center filly} \ .frame.canvas {left frame center fillx filly} pack append .\ .frame {left frame center fillx filly} button .frame.canvas.action \ -relief raised \ -text "Action" \ -command "multi_action" .frame.canvas create window 1 25 \ -anchor w \ -window .frame.canvas.action for {set i 2} {$i < 26} {incr i} { button .frame.canvas.button$i \ -relief raised \ -background "#060" \ -foreground wheat \ -activebackground "#080" \ -activeforeground wheat \ -text "Button $i" set id [.frame.canvas create window 1 [expr $i*25] \ -anchor w \ -window .frame.canvas.button$i] .frame.canvas.button$i configure \ -command "multi_activate $i $id" } } setupGo Back Up