Author image Michael Krause
and 1 contributors


Tk::HdrResizeButton - provides a resizeable button for a HList column header.


    use Tk;
    use Tk::HList;
    use Tk::HdrResizeButton;

    my $mw = MainWindow->new();

    my $hlist = $mw->Scrolled('HList',
         -header => 1
         )->pack(-side => 'left', -expand => 'yes', -fill => 'both');

    my $headerstyle   = $hlist->ItemStyle('window', -padx => 0, -pady => 0);
    my $header0 = $hlist->HdrResizeButton( 
          -text => 'Test Name', 
          -relief => 'flat', -pady => 0, 
          -command => sub { print "Hello, world!\n";}, 
          -column => 0
    $hlist->header('create', 0, 
          -itemtype => 'window',
          -widget => $header0, 

    my $header1 = $hlist->HdrResizeButton( 
          -text => 'Status', 
          -command => sub { print "Hello, world!\n";}, 
          -column => 1
    $hlist->header('create', 1,
          -itemtype => 'window',
          -widget   => $header1, 
          -style    => $headerstyle


The HdrResizeButton widget provides a resizeable button widget for use in an HList column header. When placed in the column header, the right edge of the widget can be selected and dragged to a new location to change the size of the HList column. When resizing the column, a column bar will also be placed over the HList indicating the eventual size of the HList column. A command can also be bound to the button to do things like sorting the column. On DoubleClicking a Column it is closed / re-opened. A Right-ButtonClick will resize the column to the fit the needs of all the column contents.

The widget takes all the options that a standard Button does. Note: For a proper operationthe following option MUST be specified during creation:


The column number that this HdrResizeButton is associated with. (It has to be provided to resize the appropriate column).

In addition, the following options may be specified:


The default command is associated with an open/close function for the selected column. The function is called with a Tk::HdrResizeButton reference for custom usage.


The background color used for the column Header during active state (Mouse over Header).


The foreground color used for the column Header during active state (Mouse over Header).


The relief used for the column Header Button during selected state (Button pressed).


The minwidth is used for the specific column (during resize), default: 30.


The closedminwidth is used for the specific column (while in "CLOSED" view), default: 10.


The resizerwidth is the resize sensor-area on the right border of the specific column, default: 1.


Shaun Wandler <>


Updated by Slaven Rezic and Frank Herrmann, Enhanced/Modified by Michael Krause KrauseM_AT_gmx_DOT_net

DONE (MK) position columnbar correctly and only use MoveColumnBar to move it instead of destroying it and re-creating with CreateColumnBar
(???) use Subwidget('scrolled') if it exists
DONE (MK) don't give error if -command is not specified
DONE (MK) don't let the user hide columns (minwidth?)
DONE (MK) * double-click on column should not more execute the single-click command callback