Author image X Cramps
and 1 contributors


TkUtil::Configure - Trap and act on Tk <Configure> events


Version 0.03


Fairly intelligent trapping of <Configure> events within Perl/Tk.

    use TkUtil::Configure;

    my $conf = TkUtil::Configure->new(top => $mw, callback => ??);

All you currently have is the constructor, because that's all that is needed. See below for additional information.


In Perl/Tk programming, you often want to bind to the <Configure> event so that you can elegantly resize your internal windows when the main window is resized.

The problem is that a simple resize can generate hundreds of resize events. And if the job you must do in a window is complex or time consuming, handling all of these events can be problematic.

That's what this class was written for... to bind the <Configure> event, and deal with all of the incoming events in a reasonable fashion, and only call your callback function(s) when we think the user is done.

The callback function(s) are where you do the necessary redrawing of the window(s), of course.

This was written (and made available) because too many people struggle with this issue (me included). Most people simply give up and don't allow (or deal with) resize at all, because the issue is such a problem. Enjoy.


X Cramps, <cramps.the at>


Please report any bugs or feature requests to bug-tkutil-configure at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc TkUtil::Configure

You can also look for information at:


Copyright 2009 X Cramps, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


  $conf = TkUtil::Configure->new(top => ??, callback => ??, %opts);

%opts can be:

  on      - provide a widget id to trigger the callback for [1]
  timeout - amount of time before a callback is generated (in msec) [2]

top is the toplevel widget upon which to bind the <Configure> event.

Note that both on and callback can be array references. You can have multiple widgets specified in on and only a single callback if you like (since the first argument to the callback is the widget, the callback can behave differently based upon it).

    [1] callback is called when the top widget is configured (resized). It
    is called with the widget id and the new width and height of the 
    widget under 
    consideration (I<on>). I<on> is the widget id to trigger this
    particular callback for.

    [2] when a widget is resized, we get LOTS of <Configure> events.
    Even with fast computers, you can overload with events if
    you need to do something complex when the user resizes. The
    timeout allows you to build up events until the last event
    was I<timeout> msec ago, and only then trigger a callback.
    The default is 500 msec (1/2 second). Your callback won't
    be called unless I<timeout> msec has elapsed from the last
    <Configure> event.



Find how many events were culled for you.