Here is a little sample application, based on the BWidget main window. ====== #! /bin/sh # # BWidget Application Template # # Restart using wish \ exec wish "$0" ${1+"$@"} package require Tk package require BWidget proc appCreate { } { # Menu description set descmenu { "&File" all file 0 { {command "&New" {} "New Blank Document" {} -command appNew} {command "&Open" {} "Open" {} -command appOpen} {command "&Save" {} "Save" {} -command appSave} {command "E&xit" {} "Exit Application" {} -command appExit} } "&Edit" all edit 0 { {command "Cu&t" {} "Cut" {Ctrl x} -command appCut} {command "&Copy" {} "Copy" {Ctrl c} -command appCopy} {command "&Paste" {} "Paste" {Ctrl v} -command appPaste} } "&Help" all help 0 { {command "&About" {} "" {} -command appHelpAbout} } } # Create main frame set mainframe [MainFrame .mainframe -menu $descmenu] # toolbar 1 creation set tb1 [$mainframe addtoolbar] set bbox [ButtonBox $tb1.bbox1 -spacing 0 -padx 1 -pady 1] $bbox add -image [Bitmap::get new] -command appNew \ -highlightthickness 0 -takefocus 0 -relief link \ -borderwidth 1 -padx 1 -pady 1 \ -helptext "Create Blank Document" $bbox add -image [Bitmap::get open] -command appOpen \ -highlightthickness 0 -takefocus 0 -relief link \ -borderwidth 1 -padx 1 -pady 1 \ -helptext "Open an existing file" $bbox add -image [Bitmap::get save] -command appSave \ -highlightthickness 0 -takefocus 0 -relief link \ -borderwidth 1 -padx 1 -pady 1 \ -helptext "Save file" pack $bbox -side left -anchor w set sep [Separator $tb1.sep -orient vertical] pack $sep -side left -fill y -padx 4 -anchor w set bbox [ButtonBox $tb1.bbox2 -spacing 0 -padx 1 -pady 1] $bbox add -image [Bitmap::get cut] -command appCut \ -highlightthickness 0 -takefocus 0 -relief link \ -borderwidth 1 -padx 1 -pady 1 \ -helptext "Cut selection" $bbox add -image [Bitmap::get copy] -command appCopy \ -highlightthickness 0 -takefocus 0 -relief link \ -borderwidth 1 -padx 1 -pady 1 \ -helptext "Copy selection" $bbox add -image [Bitmap::get paste] -command appPaste \ -highlightthickness 0 -takefocus 0 -relief link \ -borderwidth 1 -padx 1 -pady 1 \ -helptext "Paste selection" pack $bbox -side left -anchor w wm protocol . WM_DELETE_WINDOW { appExit } pack $mainframe -fill both -expand yes update idletasks } proc appNew {} { } proc appOpen {} { tk_getOpenFile } proc appSave {} { } proc appExit {} { exit } proc appCut {} { event generate [focus] <> } proc appCopy {} { event generate [focus] <> } proc appPaste {} { event generate [focus] <> } proc appHelpAbout {} { tk_messageBox -message "Application Template" } proc main {} { wm withdraw . appCreate wm deiconify . } main ====== <> Example