Using a variable instead of constants for properties in wxFormBuilder

338 Views Asked by At

In widgets like the spinctrl or slider box, properties like the inital position, min and max values etc can be set to constants. Is there any way by which they can be specified as variables.

so the code

self.HDSpin = wx.SpinCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 10, 0 )

becomes

self.HDSpin = wx.SpinCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, params.minv, params.maxv, params.defaultv )

This will allow the parameters to be set at run time just before the dialog is shown.

2

There are 2 best solutions below

0
On BEST ANSWER

As a workaround, in place of each variable enter a unique number: eg: 123401,123402,123403 etc. Once the "gui.py" autogenerated file is created, run a script with sed that replaces each number with the corresponding variable. I use the same to make the default strings runtime determined as opposed to hardcoded. With strvar01,strvar02 in the default string textboxes

#!/bin/bash

FILE="gui.py"

sed -i 's/123401/HDMin/g' "$FILE"
sed -i 's/123402/HDDefault/g' "$FILE"
sed -i 's/123403/HDMax/g' "$FILE"
sed -i 's/u"strvar01"/DefaultStr1/g' "$FILE"

so the auto-generated code self.Label1 = wx.StaticText(..., u"strvar01", ... )

becomes: self.Label1 = wx.StaticText(...,DefaultStr1, ... )

where the value of DefaultStr1 is set at runtime

2
On

Yes, just use variables like you would in a normal(non wxpython) python method.