Here is an attempt to write a script to display each widget available in Tk. It made the assumption that all widgets begin with a lowercase letter. But this assumption seems not valid as for instance ttk::deprecated is not a widget at all or clipboard is not listed.
# # 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
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
Here is another attempt, which misses also ttk:: commmands, but not clipboard command and seems closer to documentation commands list :
# # the dynamic list of Tk commands # set tclCommands [lsort [info commands]] puts "[llength $tclCommands] tcl commands." set tkVersion [package require Tk] set allCommands [lsort [info commands]] puts "[llength $allCommands] tcl and tk ($tkVersion) commands." set tkCommands {} foreach element $allCommands { if { [lsearch $tclCommands $element] < 0 } { lappend tkCommands $element } } foreach cmd $tkCommands { puts $cmd } exit
It gives :
92 tcl commands. 152 tcl and tk (8.5.7) commands. . auto_mkindex auto_mkindex_old auto_reset bell bind bindtags button canvas checkbutton clipboard destroy entry event focus font frame grab grid image label labelframe listbox lower menu menubutton message option pack panedwindow pkg_mkIndex place radiobutton raise registry scale scrollbar selection spinbox tclPkgSetup tclPkgUnknown tcl_findLibrary text thread_load thread_source tk tk_chooseColor tk_chooseDirectory tk_getOpenFile tk_getSaveFile tk_menuSetFocus tk_messageBox tk_popup tk_textCopy tk_textCut tk_textPaste tkwait toplevel winfo wm