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::Dial - an alternative to the Scale widget


    use Tk::Dial;

    $dial = $top->Dial(-margin =>  20,
                       -radius =>  48,
                       -min    =>   0,
                       -max    => 100,
                       -value  =>   0,
                       -format => '%d');

    margin - blank space to leave around dial
    radius - radius of dial
    min, max - range of possible values
    value  - current value
    format - printf-style format for displaying format

Values shown above are defaults.


A dial looks like a speedometer: a 3/4 circle with a needle indicating the current value. Below the graphical dial is an entry that displays the current value, and which can be used to enter a value by hand.

The needle is moved by pressing button 1 in the canvas and dragging. The needle will follow the mouse, even if the mouse leaves the canvas, which allows for high precision. Alternatively, the user can enter a value in the entry space and press Return to set the value; the needle will be set accordingly.


 Tick marks
 Step size


Roy Johnson <>

Based on a similar widget in XV, a program by John Bradley <>


August 1995: Released for critique by pTk mailing list