The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Tk::DirTree - Create and manipulate DirTree widgets


use Tk::DirTree;

$dirtree = $parent->DirTree(?options?);


The DirTree class is derived from the Tree class and inherits all the methods, options and subwidgets of its super-class.


Tree supports all the standard options of a Tree widget. See Tk::options for details on the standard options.


Name: browseCmd
Class: BrowseCmd
Switch: -browsecmd

Specifies a callback to call whenever the user browses on a directory (usually by single-clicking on the name of the directory). The callback is called with one argument, the complete pathname of the directory.

Name: command
Class: Command
Switch: -command

Specifies the callback to be called when the user activates on a directory (usually by double-clicking on the name of the directory). The callback is called with one argument, the complete pathname of the directory.

Name: dircmd
Class: DirCmd
Switch: -dircmd

Specifies the callback to be called when a directory listing is needed for a particular directory. If this option is not specified, by default the DirTree widget will attempt to read the directory as a Unix directory. On special occasions, the application programmer may want to supply a special method for reading directories: for example, when he needs to list remote directories. In this case, the -dircmd option can be used. The specified callback accepts two arguments: the first is the name of the directory to be listed; the second is a Boolean value indicating whether hidden sub-directories should be listed. This callback returns a list of names of the sub-directories of this directory. For example:

    sub read_dir {
        my( $dir, $showhidden ) = @_;
        return( qw/DOS NORTON WINDOWS/ ) if $dir eq "C:\\";
Name: showHidden
Class: ShowHidden
Switch: -showhidden

Specifies whether hidden directories should be shown. By default, a directory name starting with a period "." is considered as a hidden directory. This rule can be overridden by supplying an alternative -dircmd option.

Name: directory
Class: Directory
Switch: -directory
Alias: -value

Specifies the name of the current directory to be displayed in the DirTree widget.


The DirTree constructor method creates a new window (given by the $dirtree argument) and makes it into a DirTree widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the DirTree such as its cursor and relief. The DirTree widget displays a list view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory.


The DirTree method creates a widget object. This object supports the configure and cget methods described in Tk::options which can be used to enquire and modify the options described above. The widget also inherits all the methods provided by the generic Tk::Widget class.

The following additional methods are available for DirTree widgets:


Change the current directory to dir.


These methods have to be documented or made private:



The mouse and keyboard bindings of the DirTree widget are the same as the bindings of the Tree widget.


directory, tree, tix


Tk::Tree Tk::HList


Perl/TK version by Chris Dean <>. Original Tcl/Tix version by Ioi Kim Lam.