Message(3pm)

πŸ’Œ Message(3pm) β€” the Tk::Message manual, but make it slay ✨

okay bestie, sit down, hydrate, and let's talk about Tk::Message πŸ’– it lives in the User Contributed Perl Documentation corner of the perl-verse, and it's genuinely one of the cutest little widgets out there. it makes text. it wraps text. it's giving typography main character energy. let's go πŸŽ€


🌸 NAME 🌸

Tk::Message β€” Create and manipulate Message widgets πŸ’…


✨ SYNOPSIS ✨

no cap, this is literally the whole vibe:

use Tk::Message;
...
my $message = $parent->Message(
    -text => 'somewhat long message text',
    -aspect => 100,
    -justify => 'left',
)->pack();

look at her go πŸ¦‹


πŸ‘‘ STANDARD OPTIONS πŸ‘‘

these are the classics, the ones every widget girlie gets for free:

  • -anchor
  • -background
  • -borderwidth
  • -cursor
  • -font
  • -foreground
  • -highlightbackground
  • -highlightcolor
  • -highlightthickness
  • -padx
  • -pady
  • -relief
  • -takefocus
  • -text
  • -textvariable
  • -width

See Tk::options for details of the standard options. (yes bestie, go read that one too, it's the lore 🫢)


πŸŽ€ WIDGET-SPECIFIC OPTIONS πŸŽ€

these three are hers. her signature scents, if you will 🌸

  • Name: aspect Class: Aspect Switch: -aspect

this one takes a non-negative integer and it tells the widget what aspect ratio you want for the text. the ratio is specified as 100*width/height. so 100 means the text should be as wide as it is tall, 200 means it should be twice as wide as it is tall, 50 means it should be twice as tall as it is wide, and so on and so forth, you get the pattern πŸ’« It's used to choose line length for text if the width option isn't specified. Defaults to 150.

  • Name: justify Class: Justify Switch: -justify

how do we justify the lines of text, bestie? must be one of left, center, or right. Defaults to left. This option works together with the anchor, aspect, padX, padY, 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, padX, and padY 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. Then 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 padX from the right side of the window; the entire text block will be centered in the vertical span of the window. ikyk 🧚

  • Name: width Class: Width Switch: -width

the length of lines in the window πŸ“ the value may have any of the forms acceptable to Tk_GetPixels. If this option has a value greater than zero then the aspect option is ignored and the width option determines the line length. If this option has a value less than or equal to zero, then the aspect option determines the line length. periodt πŸ’…


πŸ’– DESCRIPTION πŸ’–

The Message method creates a new window (given by the $widget argument) and makes it into a message widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the message such as its colors, font, text, and initial relief. The message command returns its $widget argument. At the time this command is invoked, there must not exist a window named $widget, but $widget's parent must exist. like, don't try to duplicate her, she's one of one πŸ™ˆ

A message is a widget that displays a textual string. A message widget has three special features, and honestly? iconic behavior.

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. 🌈

Second, 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). ✨

Third, and this is the nerdy one that I'm lowkey obsessed with β€” 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. πŸ’€

πŸ¦‹ WIDGET METHODS πŸ¦‹

The Message method creates a widget object. This object supports the configure and cget methods described in Tk::options which can be used to enquire and modify the options described above. The widget also inherits all the methods provided by the generic Tk::Widget class. family tree, but make it widgets 🌳


πŸ’… DEFAULT BINDINGS πŸ’…

When a new message is created, it has no default event bindings: messages are intended for output purposes only. she doesn't take input, she just speaks. main character energy, no replies in the group chat 😌


😭 BUGS 😭

Tabs don't work very well with text that is centered or right-justified. The most common result is that the line is justified wrong. not her fault, it's just the way the tab math shakes out πŸ’€


⭐ KEYWORDS ⭐

message, widget


and that's the whole page, bestie 🫢 this was perl v5.40.1, dated 2025-04-13, from the User Contributed Perl Documentation collection. go forth and justify your text, you absolute icon πŸ‘‘πŸ’–

πŸ“¦ where this page comes from