<section ID="chapter.widgets.message">
  <TITLE>Message widget</TITLE>

<subsection> <TITLE>Description</TITLE>

<P>
A message is a widget that displays a textual string. A message widget has three special features. First, it breaks up its string into lines in order to produce a given aspect ratio for the window. The line breaks are chosen at word boundaries wherever possible (if not even a single word would fit on a line, then the word will be split across lines). Newline characters in the string will force line breaks; they can be used, for example, to leave blank lines in the display. 
</P>
<P>
The second feature of a message widget is justification. The text may be displayed left-justified (each line starts at the left side of the window), centered on a line-by-line basis, or right-justified (each line ends at the right side of the window). 
</P>
<P>
The third feature of a message widget is that it handles control characters and non-printing characters specially. Tab characters are replaced with enough blank space to line up on the next 8-character boundary. Newlines cause line breaks. Other control characters (ASCII code less than 0x20) and characters not defined in the font are displayed as a four-character sequence \xhh where hh is the two-digit hexadecimal number corresponding to the character. In the unusual case where the font doesn't contain all of the characters in ``0123456789abcdef\x'' then control characters and undefined characters are not displayed at all. 

<subsection> <TITLE>Parameters</TITLE>

<P>
<LIST>
<ITEM> <<1:VS>> : Specifies the text displayed inside the widget (same as text). This parameter can be only used with the <<set()>> and <<get()>> methods.

&param_init_text;

<ITEM> <<return:V>> : When the window is closed, <<V>> is bound to the contents of the label. <<V>> must be a free variable.

&param_anchor;
&param_background;
&param_borderwidth;
&param_cursor;
&param_font;
&param_foreground;
&param_highlightbackground;
&param_highlightcolor;
&param_highlightthickness;

<ITEM> <<justify:A>> : Specifies how to justify lines of text. Must be one of the following atoms : <<left>>, <<center>>, or <<right>>. Defaults to <<left>>. This option works together with the <<anchor>>, <<aspect>>, <<ipadx>>, <<ipady>>, and <<width>> options to provide a variety of arrangements of the text within the window. The <<aspect>> and <<width>> options determine the amount of screen space needed to display the text. The <<anchor>>, <<ipadx>>, and <<ipadi>> options determine where this rectangular area is displayed within the widget's window, and the <<justify>> option determines how each line is displayed within that rectangular region. For example, suppose <<anchor>> is <<e>> and <<justify>> is <<left>>, and that the message window is much larger than needed for the text. The text will be displayed so that the left edges of all the lines line up and the right edge of the longest line is <<ipadx>> from the right side of the window; the entire text block will be centered in the vertical span of the window. 

&param_relief;
&param_takefocus;
&param_text;

<ITEM> <<aspect:I>> : Specifies a non-negative integer value indicating desired aspect ratio for the text. The aspect ratio is specified as 100*width/height. 100 means the text should be as wide as it is tall, 200 means the text should be twice as wide as it is tall, 50 means the text should be twice as tall as it is wide, and so on. Used to choose line length for text if <<width>> option isn't specified. Defaults to 150. 

&param_ipadx;
&param_ipady;

&param_glue;
&param_padx;
&param_pady;
&param_feature;
&param_handle;
&param_tooltips;


</LIST>

</P>

<subsection> <TITLE>Interface</TITLE>

<P>
The object you get by an handle on the widget implements the following methods :

<LIST>

&interface_set;
&interface_get;
&interface_bind;
&interface_getFocus;
&interface_setGrab;
&interface_releaseGrab;
&interface_getGrabStatus;
&interface_raise;
&interface_lower;
&interface_winfo;

</LIST>

</section>
