Try the following:
<Field name='yourButton'>
<Display class='Button'>
<Property name='label' value='Surprise'/>
<Property name='command' value='Recalculate'/>
<Property name='value' value='true'/>
<Property name='Help' value='<b>Click this to reveal a new widget.'/>
</Display>
</Field>
<Field name='theHiddenWidget'>
<Display class='Text'>
<Property name='title' value='Your Surprise'/>
<Property name='size' value='15'/>
<Property name='maxLength' value='10'/>
</Display>
<Disable>
<isFalse>
<ref>yourButton</ref>
</isFalse>
</Disable>
</Field>
In my testing, theHiddenWidget remains revealed through subsequent recalculations, but I recommend you test it yourself through all the Expansion changes your form will execute.
If you want to hide it again, you'll need a more complicated Disable condition and probably a third field which acts as a toggle when the button it pressed.
Jason