Re: Re: text size in GUIKit
- To: mathgroup at smc.vnet.net
- Subject: [mg50972] Re: [mg50872] Re: [mg50862] text size in GUIKit
- From: Jeff Adams <jeffa at wolfram.com>
- Date: Thu, 30 Sep 2004 04:52:18 -0400 (EDT)
- References: <200409240841.EAA21793@smc.vnet.net> <200409250555.BAA05036@smc.vnet.net> <415A30FA.7020809@math.umass.edu>
- Sender: owner-wri-mathgroup at wolfram.com
On Sep 28, 2004, at 10:50 PM, Murray Eisenberg wrote: > OK. But now how do I change the font size of a field label? > > I tried replacing the label with a StyleForm expression, but that is > not accepted. For example, in your "first variant", I edited it to > be: > > GUIRun[ > Widget["Panel", { > {Widget["Label", {"text" -> StyleForm["Input:", FontSize -> > 36]}], > Widget["TextField", {"text" -> "Some text.", > "columns" -> 12}, Name -> "myText"]}, > Script[ > fnt = PropertyValue[{"myText", "font"}]; > newFnt = InvokeMethod[{fnt, "deriveFont"}, 36]; > SetPropertyValue[{"myText", "font"}, newFnt]; > ] > }, WidgetLayout -> {"Border" -> {{5, 5}, {5, 10}}}] > ] > > An error message ensued: > > Widget::deferr: Input: is not valid GUI definition content. > > (with the word 'Input' in 36-point type!), and of course then the > subsequent error message: > > GUIRun::nvalid: The GUI definition contains invalid content. Hello, Valid GUiKit widget definitions are defined with a small set of valid elements, essentially made up of a hierarchy of Widget, PropertyValue, SetPropertyValue, BindEvent and Script expressions. Arbitrary Mathematica code and symbols work within Script[] blocks but not a part of the widget definition expression itself, which is the reason for the StyleForm error. You can change the label's font in the same way you change the textfield's font since most components that display text have a "font" property that you can set. A quick change of the example by giving the label widget a name and setting its "font" property is as follows: GUIRun[ Widget["Panel", { {Widget["Label", {"text" -> "Input:"}, Name -> "myLabel"], Widget["TextField", {"text" -> "Some text.", "columns" -> 12}]}, Script[ fnt = PropertyValue[{"myLabel", "font"}]; newFnt = InvokeMethod[{fnt, "deriveFont"}, 36]; SetPropertyValue[{"myLabel", "font"}, newFnt]; ]}, WidgetLayout -> {"Border" -> {{5, 5}, {5, 10}}}] ] Another variant which I hinted at in the previous correspondence was that you might want to define one named font and use this with multiple widgets within one interface. In the version below I create and name one instance of a new font in one Script block and then refer to this named font when assigning it as the "font" property to both the label and text field: GUIRun[ Widget["Panel", { {Widget["Label", {"text" -> "Input:"}, Name -> "myLabel"], Widget["TextField", {"text" -> "Some text.", "columns" -> 12}, Name -> "myText"]}, Script[ InvokeMethod[{ PropertyValue[{"myLabel", "font"}], "deriveFont"}, 36, Name -> "sharedFont"]; ], SetPropertyValue[{"myLabel", "font"}, WidgetReference["sharedFont"]], SetPropertyValue[{"myText", "font"}, WidgetReference["sharedFont"]] }, WidgetLayout -> {"Border" -> {{5, 5}, {5, 10}}}] ] Thanks, Jeff Adams Wolfram Research
- References:
- text size in GUIKit
- From: Murray Eisenberg <murray@math.umass.edu>
- Re: text size in GUIKit
- From: Jeff Adams <jeffa@wolfram.com>
- text size in GUIKit