Previous
Hello World 
Next
Frame, Text, Scrollbar, Scale 
Perl/Tk Tutorial - Create GUI with Perl's Tk Module
Button, Entry, Label

Widgets 1 : Button, Entry, Label

A widget is a user interface object in X graphical user interfaces. Confused? Lets just say that it is the name of the object that appears on screen. There are many types widgets. If you want to display a button, you use the button widget. For text, you use the text widget. For entry, you guessed it, the entry widget.
Syntax:
my $WidgetVariable = $Window -> WidgetType(?Option 1=>Value 1, ?Option 2=>Value 2 ...??) -> pack();

Three things need to be said about widgets. First is the widget variable. This I have explained earlier. The widget variable of all widgets must be unique and will be used whenever that widget needs to be accessed. Second is the options. Each widget has some options which can be used to configure it. This is usually done when the widget is declared, but it can be done afterward also. The final thing is commands. Each widget has some commands which also can be used to configure it or make it do some thing.

But before we begin, we need to know a little about the pack command. I have explained this earlier but just doing it one more time so that you don't have to push the back button. Pack is a geometry manager. Another geometry manager is 'grid' - we will explore that latter. Pack is much more simpler than grid.
The line $hello -> pack; tells the interpreter to pack the widget called "$hello".


Button

This will make a button. It can be configured to execute some code when the button is pushed. This will usually refer to a function so when the button is pushed, the function will run. An button is shown below. This button is created using HTML input tag.

Some Options
-text=>"TEXT" TEXT will be the text displayed on the button
-command=>CALLBACK CALLBACK will be the code that is called when the button is pushed

#!/usr/local/bin/perl
use Tk;

# Main Window
my $mw = new MainWindow;

my $but = $mw -> Button(-text => "Push Me", 
		-command =>\&push_button);
$but -> pack();

MainLoop;

#This is executed when the button is pressed 
sub push_button {
	... whatever ...
}

You may have noticed that I used a slash(\) in the command callback (-command =>\&push_button);). Make sure that the slash stays there - to see why, go to the Most common mistakes by Perl/Tk beginners.


Entry

An entry is a widget that displays a one-line text string and allows the user to input and edit text in it. When an entry has the input focus it displays an insertion cursor to indicate where new characters will be inserted. An entry element is shown using HTML.

Some Options
-width=>NUMBERWidth of the input field. NUMBER should be an integer.
-textvariable=>\$VARIABLEThe contents of the variable VARIABLE will be displayed in the widget. If the text in the widget is edited, the variable will be edited automatically.
-state=>STATE The state of the input field. It can be normal, disabled, or readonly. If it is readonly the text can't be edited.
Some Commands
SyntaxDescriptionExample
$widget -> get(); The text inside input field can be taken by this command $name = $ent -> get();
$widget -> delete(FIRST?,LAST?); Delete one or more elements of the entry. FIRST is the index of the first character to delete, and LAST is the index of the character just after the last one to delete. If last isn't specified it defaults to FIRST+1, i.e. a single character is deleted. This command returns an empty string. $ent -> delete(0,'end');
$widget -> insert(index,"STRING"); Insert the characters of STRING just before the character indicated by index. Index is 0 for the first character. The word "end" can be used for the last character $ent -> insert('end',"Hello");

Example

#!/usr/local/bin/perl
use Tk;

# Main Window
my $mw = new MainWindow;

#GUI Building Area
my $ent = $mw -> Entry() -> pack();
my $but = $mw -> Button(-text => "Push Me", 
		-command =>\&push_button);
$but -> pack();

MainLoop;

#This is executed when the button is pressed 
sub push_button {
	$ent -> insert('end',"Hello");
}

Label

This widget display text messages.

Some Options
-text => "TEXT"TEXT will be the text displayed on the button
-font => FONTSpecifies the font to use when drawing text inside the widget. You can specify just the font or you can give it in this format "FONTNAME SIZE STYLE". The STYLE can be bold, normal etc.

Example

#!/usr/local/bin/perl
use Tk;

my $mw = new MainWindow; # Main Window

my $lab = $mw -> Label(-text=>"Enter name:") -> pack();
my $ent = $mw -> Entry() -> pack();
my $but = $mw -> Button(-text => "Push Me", 
		-command =>\&push_button);
$but -> pack();

MainLoop;

#This is executed when the button is pressed
sub push_button {
	$ent -> insert(0,"Hello, ");
}
Previous
Hello World 
Next
Frame, Text, Scrollbar, Scale 
Subscribe to Feed