Posted to tcl by patthoyts at Sun Feb 10 16:35:31 GMT 2008view pretty
proc Form {parent} { set dlg [toplevel $parent.mydialog -class Dialog] wm withdraw $dlg wm title $dlg "My form" wm transient $dlg $parent variable $dlg set State [namespace which -variable $dlg] upvar #0 $State state array set $dlg {thingOne 1 thingTwo 0 ok ""} ttk::checkbutton $dlg.t1 -text "Thing one" -underline 8 -variable $State\(thingOne\) ttk::checkbutton $dlg.t2 -text "Thing two" -underline 8 -variable $State\(thingTwo\) ttk::button $dlg.ok -text "OK" -default active -command [list set $State\(ok\) ok] ttk::button $dlg.cancel -text "Cancel" -command [list set $State\(ok\) cancel] bind $dlg <Return> [list $dlg.ok invoke] bind $dlg <Escape> [list $dlg.cancel invoke] wm protocol $dlg WM_DELETE_WINDOW [list $dlg.cancel invoke] grid $dlg.t1 - -sticky news grid $dlg.t2 - -sticky news grid $dlg.ok $dlg.cancel -sticky se grid columnconfigure $dlg 0 -weight 1 grid rowconfigure $dlg 2 -weight 1 wm deiconify $dlg tkwait variable $State\(ok\) if {$state(ok) eq "ok"} { # dialog was accepted: do ok stuff. } unset $dlg destroy $dlg }