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

Experimenting with Fonts

You don’t generally want to hardcode font specifications in your programs. Simply put, it prevents your users from customizing your applications. There are extenuating circumstances, though; you might have an HP calculator that has a specific look that shouldn’t be changed (see Chapter 15). Creating such a specific look might require one or more particular fonts.

One way to determine what font to use is to write a program using the fontFamilies method that displays various font specifications. So, before we get into the details of creating a font definition, let’s look at a program that lets us play around with the fonts on our system. This program is useful no matter what operating system you’re on.

use Tk; use Tk::BrowseEntry; use strict; my $mw = MainWindow->new(-title => 'Font Viewer'); my $f = $mw->Frame->pack(-side => 'top'); my $family = 'Courier'; my $be = $f->BrowseEntry(-label => 'Family:', -variable => \$family, -browsecmd => \&apply_font)->pack(-fill => 'x', -side => 'left'); $be->insert('end', sort $mw->fontFamilies); my $size = 24; my $bentry = $f->BrowseEntry(-label => 'Size:', -variable => \$size, -browsecmd => \&apply_font)->pack(-side => 'left'); $bentry->insert('end', (3 .. 32)); my $weight = 'normal'; $f->Checkbutton(-onvalue => 'bold', -offvalue => 'normal', -text => 'Weight', -variable => \$weight, -command => \&apply_font)->pack(-side => 'left'); my $slant = 'roman'; $f->Checkbutton(-onvalue => 'italic', -offvalue => 'roman', -text ...

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