Tablelist supports interactive cell editing with the aid of the Tk core entry, text, spinbox, checkbutton, and menubutton widgets. These widgets are automatically registered for cell editing, hence the only action needed for using one of them for editing the cells of a given column is as follows:
Use the tablelist widget's
subcommand to set the given column's
-editable option to true
-editwindow option to
menubutton, respectively. (These options are
supported at cell level, too, with the aid of the
subcommand.) Since the default value of the
-editwindow column configuration option is
entry, it is not necessary to set it explicitly if the
editing should take place with the aid of an embedded entry widget.
REMARK: The temporary embedded Tk core widget used for
interactive cell editing will appear properly scaled, according to the
display's DPI scaling level, given by the variable
tablelist::tablelistcommand for details on the editing process.
-padyoptions set to
-wrapoption set to
none, and its initial height set to the number of lines contained in it. There is, however, an exception from this rule: If the
-wrapoption of the cell's column was set to true and Tk version 8.5 or higher is being used, then the text widget's
-wrapoption will be set to
wordand its initial height will equal the number of display lines (taking into account the line wraps) contained in it. You can use the script corresponding to the
-editstartcommandtablelist configuration option to override the initial settings (except the height) according to your needs.
-wrapoption was set to
char(either by Tablelist or from within the above-mentioned script) and Tk version 8.5 or higher is being used, then, whenever its width changes (e.g., due to interactive column resizing), its height will be set automatically to the number of display lines contained in it. (The number of display lines is retrieved with the aid of the
count -displaylinestext widget subcommand, introduced in Tk 8.5.)
package require Wcbor
package require wcb) then the text widget's height will be updated automatically whenever text is inserted into or deleted from it, which makes the editing much more user-friendly. This is achieved by using an appropriately defined after-
deletecallback for the edit window. You can use the script corresponding to the
-editstartcommandtablelist configuration option to define further callbacks for the text widget. (The above-mentioned callback is created via
wcb::cbappend, after returning from that script.)
Tabkey is reserved for navigation between the editable cells, but the user can insert a tabulator character into the text widget by pressing
KP_Enterkeys insert a newline character into the text widget.
Control-jcan also be used for inserting a newline.
Control-KP_Enterterminate the editing and destroy the edit window.
Control-Endhave their well-known text widget-specific bindings, just like
tk_strictMotifis false. Again, this is different from the behavior of the other widgets used for interactive cell editing. For jumping into the first/last editable cell, the user can press
Command-Endon Mac OS Classic and Mac OS X/11+ Aqua).
-stateoption set to
normal, which makes the widget editable. You can use the script corresponding to the
-editstartcommandtablelist configuration option to set the state of the spinbox to
readonlyor define validations for it, as well as for setting its (range of) values and its
-variableoptions. In an X11 environment it will be created with explicitly set values for its
-variableoptions. You can use the script corresponding to the
-editstartcommandtablelist configuration option to set any other options, like
-onvalue, according to the internal values of the cells. Since the default values of the
-onvaluecheckbutton options are
1, you don't need to change these options if the cells have the same internal values
-textvariableoptions. In addition, a menu with its
-tearoffoption set to
0and an appropriate script as the value of its
-postcommandoption is created and set as the value of the menubutton's
-menuoption. In an X11 environment, the menu's appearance is adapted to that of the tablelist widget by setting its
-activeborderwidthoptions to appropriate values. You can use the script corresponding to the
-editstartcommandtablelist configuration option to set any other options of the menubutton and/or its associated menu. You will, however, need this script in the first place for populating the menu, preferably with radiobutton entries. For every radiobutton entry added to the menu, the Tablelist implementation will make sure that its value (which can be specified by setting the entry's
-labeloption) will be displayed in the menubutton as its text when the entry is selected. (Tablelist achieves this by setting the menu entry's
-variableoption to the value of the menubutton's
-textvariableoption.) For menu entries of types other than radiobutton (e.g., for command entries) it is the responsibility of the application to make sure that the selected entry's text will be shown in the menubutton (for example, with the aid of the menu entry's