O'Reilly logo

Mastering Perl/Tk by Nancy Walsh, Stephen Lidie

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Using Fonts

Now that we know what comprises a font, let’s look at a few ways we can specify them in code.

We simplify things in our Perl/Tk applications by being able to create a single name that refers to a combination of family, size, weight, slant, underline, and overstrike:

$code_font = $mw->fontCreate('code', -family => 'courier',
                             -size => 12);

Once we have created our new font, you can refer to the font by the variable $code_font or by the name, 'code':

$mw->Button(-text => "Show Code", -font => 'code');
$mw->Button(-text => "Show Code2", -font => $code_font);

It is much simpler to specify all the desired font options once and refer to them using the name or variable later in the program. If you don’t want to use a name for the font, don’t specify it; the system will generate a name for you automatically.

$code_font = $mw->fontCreate(-family => 'courier',
                             -size => 12);

Once the font is created, you can change any of its settings using the fontConfigure method, using the font name or reference as the first argument:

$mw->fontConfigure($code_font, -family => 'Verdana');

The changes will take effect immediately on any widgets using that font, making it very useful for on-the-fly changes.

The -font option will also accept an anonymous array containing the right parts, with or without the identifiers:

-font => ['courier', '14', 'bold']
# The same thing, but more verbose:
-font => [-family => 'courier',
          -size => '14',
          -weight => 'bold']

The second way is much more verbose, and easier ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required