変数タイプ、変数名、プロンプト、およびデフォルト値のリストを渡すことができるクラスを作成しました。このクラスはwxPythonパネルを作成します。このパネルはフレームに表示され、ユーザーが計算ボタンを押して結果をプロットとして返す前に入力値を設定できます。execステートメントを使用してすべての変数をクラスに追加します。これにより、すべての変数が1つのクラスにまとめられ、名前で参照できます。
light = Variables( frame , [ ['f','wavelength','Wavelength (nm)',632.8] ,\
['f','n','Index of Refraction',1.0],])
クラス内で、次のようなステートメントを使用して変数を作成および設定します。
for variable in self.variable_list:
var_type,var_text_ctrl,var_name = variable
if var_type == 'f' :
exec( 'self.' + var_name + ' = ' + var_text_ctrl.GetValue() )
変数を使用する必要がある場合は、名前で参照できます。
wl = light.wavelength
n = light.n
次に、Pythonでexecを使用する必要はめったにないことをSOで読みました。このアプローチに問題はありますか?グループ化する必要があり、編集できるようにしたい変数を保持し、表示、編集(およびすべての変数をファイルに保存)するためのコードとwxPython呼び出しを含むクラスを作成するためのより良い方法はありますか?またはそれらをもう一度読み返します)?
Curt