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


Tickit::Widget::SegmentDisplay - show a single character like a segmented display


This class provides a widget that imitates a segmented LED or LCD display. It shows a single character by lighting or shading fixed rectangular bars.


The default style pen is used as the widget pen, though only the background colour will actually matter as the widget does not directly display text.

The following style keys are used:

lit => COLOUR
unlit => COLOUR

Colour descriptions (index or name) for the lit and unlight segments of the display.



   $segmentdisplay = Tickit::Widget::SegmentDisplay->new( %args )

Constructs a new Tickit::Widget::SegmentDisplay object.

Takes the following named arguments

value => STR

Sets an initial value.

type => STR

The type of display. Supported types are:


A 7-segment bar display. The display can also be blanked with the value " ".


A 7-segment bar display with decimal-point. To light the decimal point, append the value with ".".


A static :


A unit, prefix symbol or other character. The following characters are recognised:

  V A W Ω F H s
  G M k m µ n p
  + - %

Each will be drawn in a style approximately to fit the general LED shape display, by drawing lines of erased cells. Note however that some more intricate shapes may not be very visible on smaller scales.

use_unicode => BOOL

If true, use Unicode block-drawing characters. If false, use only coloured erase cells using the background colour.

use_halfline => BOOL

If true, vertical resolution of rendered block characters is effectively doubled by using half-filled Unicode block-drawing characters. Setting this option implies use_unicode.

use_linedraw => BOOL

If true, use Unicode linedrawing instead of erased or solid blocks. This style is more readable on smaller sizes, but is only supported by seven and colon types.

thickness => INT

Gives the number of columns wide and half-lines tall that LED bars will be drawn in. Note that unless use_halfline is set, this value ought to be an even number. Defaults to 2.

When use_linedraw is in effect, if thickness is greater than 1 then LINE_THICK segments will be used for drawing. Defaults to 1.



   $value = $segmentdisplay->value

   $segmentdisplay->set_value( $value )

Return or set the character on display


Paul Evans <>