Although standard [Tk] doesn't supply a toggle button, and most developers seem content to use a [checkbox] in its place, [Uwe Klein] illustrates how easy it is to customize a [button] by refinement of a [label]: set ::state OFF label .lb -textvariable ::state -relief raised -bd 4 bind .lb { if {"$::state" == "OFF"} { set ::state ON %W configure -relief sunken } else { set ::state OFF %W configure -relief raised } } label .l -textvariable ::state pack .lb .l -side left [[Comments: all buttons thus; deserves abstraction; backward-compatible only to 8.?]] ---- [KPV]: [tile] has something similar--the Toolbutton style for a checkbutton. This is designed for a button bar, so it usually looks better if you have an image in the widget. package require tile ::ttk::checkbutton .c1 -text "ON" -style Toolbutton pack .c1 ---- [MG] The Tk checkbutton has very simple support for this feature, too, with the -indicatoron option, which makes it work exactly as a togglebutton. pack [checkbutton .c -text "Click me" -indicatoron false] ---- [Category Widget]