def setValue(self, value=None, update=True, delaySignal=False):
if value is None:<EOL><INDENT>value = self.value()<EOL><DEDENT>bounds = self.opts['<STR_LIT>']<EOL>if bounds[<NUM_LIT:0>] is not None and value < bounds[<NUM_LIT:0>]:<EOL><INDENT>value = bounds[<NUM_LIT:0>]<EOL><DEDENT>if bounds[<NUM_LIT:1>] is not None and value > bounds[<NUM_LIT:1>]:<EOL><INDENT>value = bounds[<NUM_LIT:1>]<EOL><DEDENT>if self.opts['<STR_LIT:int>']:<EOL><INDENT>value = int(value)<EOL><DEDENT>value = D(asUnicode(value))<EOL>if value == self.val:<EOL><INDENT>return<EOL><DEDENT>prev = self.val<EOL>self.val = value<EOL>if update:<EOL><INDENT>self.updateText(prev=prev)<EOL><DEDENT>self.sigValueChanging.emit(self, float(self.val))  <EOL>if not delaySignal:<EOL><INDENT>self.emitChanged()<EOL><DEDENT>return value<EOL>
Set the value of this spin. 
If the value is out of bounds, it will be clipped to the nearest boundary.
If the spin is integer type, the value will be coerced to int.
Returns the actual value set.

If value is None, then the current value is used (this is for resetting
the value after bounds, etc. have changed)