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

A Short Break for a Simple Example

Before we get into some of the more complex things you can do with a Text widget, let’s look at a complete application that uses it.

This is a short program that will display a file, let you make changes to it, and then save it back to disk:

use Tk; $mw = MainWindow->new; # Create necessary widgets $f = $mw->Frame->pack(-side => 'top', -fill => 'x'); $f->Label(-text => "Filename:")->pack(-side => 'left', -anchor => 'w'); $f->Entry(-textvariable => \$filename)->pack(-side => 'left', -anchor => 'w', -fill => 'x', -expand => 1); $f->Button(-text => "Exit", -command => sub { exit; } )-> pack(-side => 'right'); $f->Button(-text => "Save", -command => \&save_file)-> pack(-side => 'right', -anchor => 'e'); $f->Button(-text => "Load", -command => \&load_file)-> pack(-side => 'right', -anchor => 'e'); $mw->Label(-textvariable => \$info, -relief => 'ridge')-> pack(-side => 'bottom', -fill => 'x'); $t = $mw->Scrolled("Text")->pack(-side => 'bottom', -fill => 'both', -expand => 1); MainLoop; # load_file checks to see what the filename is and loads it if possible sub load_file { $info = "Loading file '$filename'..."; $t->delete("1.0", "end"); if (!open(FH, "$filename")) { $t->insert("end", "ERROR: Could not open $filename\n"); return; } while (<FH>) { $t->insert("end", $_); } close (FH); $info = "File '$filename' loaded"; } # save_file saves the file using the filename in the Entry box. sub save_file { $info = "Saving '$filename'"; open (FH, ">$filename"); ...

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