It would be most useful if you provided an SSCCE that shed some light on the following:
-
What do you mean by "screen size"?
See Tk::Widget.
This has a number of *width and *height methods.
The units of the values returned are either in pixels or millimetres.
-
What do you mean by "text area"? Tk::Text?
This has a -width option, which you can query.
The units of the values returned are in characters.
-
What do you mean by "label"? Tk::Label?
This has a -width option, which you can query.
The units of the values returned are dependent upon whatever is displayed in the widget.
-
What geometry manager are you using for your "text area" widget?
Tk::pack?
Tk::grid?
Other?
If you're using Tk::Text
and Tk::Label,
and the labels only display text,
and all of those are using the same font,
and your geometry management is set up such that Tk::Text resizes when its parent does,
you could possibly bind a <Configure> event (see Tk::bind)
to a callback that sets the width of Tk::Label widgets to be one quarter that of the Tk::Text widget.
That's the simplest scenario.
You may need additional calculations if there's padding or spacing involved.
If the fonts are different, you'll need additional calculations to handle that:
see Tk::Font.