Oh, and yes, you can update properties with a dictionary (although that alone wouldn’t solve the duplication issue completley from what I can tell). Like so:
my_text_box=TextBox(**{'foreground': 'black', 'background': 'red'})
I also thought that this would work, however I get an error message stating the following. It is apparently trying to create new fields rather than update existing ones.
AttributeError: Cannot set attribute ‘text_box’ on ‘Report’ form. There is already a component with this name.
For my purposes, creating entirely new fields dynamically would be even better than enabling hidden fields. However, I am not clear on how to do this. It seems they are being created somewhere, but nowhere that I can see.