Here is a script to display each widget available in Tk. It made the assumption that all widgets begin with a lowercase letter. # # the dynamic list of Tk widgets # puts " Tk version [package require Tk]" puts " ----" set tkCommands [lsort [info commands "::tk::\[a-z\]*"]] foreach cmd $tkCommands { puts [string range $cmd 6 end] } exit It gives : Tk version 8.5.7 ---- button canvas checkbutton entry frame label labelframe listbox mc mcmax mcmaxamp menubutton message panedwindow radiobutton scale scrollbar spinbox text toplevel ---- It works only with version 8.5 so far. ---- [JH] This completely misses the themed Tk widget set (::ttk::*). ---- [LGT] This script tries to correct this : # # the dynamic list of Tk widgets # puts " Tk version [package require Tk]" puts " ----" set tkCommands [lsort [info commands "::tk::\[a-z\]*"]] set ttkCommands [lsort [info commands "::ttk::\[a-z\]*"]] set allCommands [concat $tkCommands $ttkCommands] foreach cmd $allCommands { puts [string range $cmd 2 end] } exit (The assumption seems not correct since for instance ttk::deprecated is not a widget at all) It gives : Tk version 8.5.7 ---- tk::button tk::canvas tk::checkbutton tk::entry tk::frame tk::label tk::labelframe tk::listbox tk::mc tk::mcmax tk::mcmaxamp tk::menubutton tk::message tk::panedwindow tk::radiobutton tk::scale tk::scrollbar tk::spinbox tk::text tk::toplevel ttk::button ttk::checkbutton ttk::clickToFocus ttk::combobox ttk::copyBindings ttk::cursor ttk::deprecated ttk::deprecated'warning ttk::do'deprecate ttk::entry ttk::focusFirst ttk::frame ttk::globalGrab ttk::grabWindow ttk::label ttk::labelframe ttk::menubutton ttk::notebook ttk::paned ttk::panedwindow ttk::progressbar ttk::radiobutton ttk::releaseGrab ttk::scale ttk::scrollbar ttk::separator ttk::setCursor ttk::setTheme ttk::sizegrip ttk::style ttk::takefocus ttk::takesFocus ttk::themes ttk::traverseTo ttk::treeview ---- [Category TK]