Displaying Text on Buttons

To show what the Button will do when it is pressed, set its text string with the -text or -textvariable option. The descriptive text string should be short and simple.

The -text option is the more common way to assign a text string:

-text => 'Submit'

The string can be anything: alphanumeric, newline(s), or variables. The text string is just like any other string in Perl in that if it is put in single quotes, it is taken literally; if it is put in double quotes, it is interpolated. The interpolation only happens once (the first time the option is parsed). If a variable changes later in the program, it has no effect on the text in the Button. The only way the text in the Button can be changed after it has been created is by using the configure method to reset it (e.g., $button->configure(-text => "newtext");) or by using the -textvariable option.

There is no default for the -text option; if no text is specified, the Button will simply have no text.

The other way to display text on the Button is by using the -textvariable option. The -textvariable option allows a scalar variable to be associated with the Button; anything in the variable will be displayed on the Button. Specify the scalar variable as follows:

-textvariable => \$variable

This means the text of the Button will change as the contents of $variable change. When the text within the Button changes, the Button may become larger or smaller, and the entire window may change size.

This piece of code shows how the -textvariable option is used:

$count = 0;
$mw->Button(-text => "Add 1",
            -command => sub { $count++ })->pack(-side => 'left');
$mw->Button(-textvariable => \$count)->pack(-side => 'left');
$mw->Button(-text => "Exit",
            -command => sub { exit })->pack(-side => 'left');

Figure 4-6 shows two windows. The first shows how the window looks when it is first created, and the second shows what it looks like after clicking the “Add 1” Button fifteen times. Even though we don’t show any specific examples using the -textvariable option for the Checkbutton and Radiobutton widgets, the option works exactly the same way.

Example of using -textvariable

Figure 4-6. Example of using -textvariable

Get Mastering Perl/Tk now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.