私は、複数の列を持つテーブルのユーザー入力用の複数のテキストボックスを提供する、ironpythonでダイアログウィンドウを構築しようとしています。しかし、私は、ユーザー入力値を別の関数に渡すのが難しいです。私のコードは次のようになります。Pythonで複数のテキストボックスダイアログの入力を保存するにはどうすればよいですか?
self.newVal = []
for column in columns:
self.label = Label()
self.label.Text = col
self.label.Location = Point(10, offset)
self.cb = Textbox()
self.cb.Text = "Type in new value"
self.cb.Location = Point(150,offset)
self.cb.Height = 20
self.cb.Width = 295
self.cb.Enabled = True
self.Controls.Add(self.label)
self.Controls.Add(self.cb)
self.newVal.append(self.cb.Text)
offset = offset + 30
問題は、このコードは、「新しい値を入力」のちょうど元のメッセージが、それは本当にテキストでユーザーの入力値をとらないですからself.newValが渡されたということです他の関数によって呼び出されたときに、実際には、別の関数のself.cb.Text
を参照すると、値はユーザーが新しく入力した値です。しかし、self.cb.Text
は最後の列の入力しか与えないので、これは私のためには機能しません。 self.newVal
にはすべての列の値が含まれますが、前述のユーザー入力では更新されません。
別の関連する質問。私は複数のTextboxを定義して個別に渡すことでこの問題を解決しようとしました。しかし、私はself.
の後に変数を使用する方法を見つけることができません。私は self.col
の代わりself.cb
を使用している場合たとえば、上記のコードでは、コードは本当にここ変数としてcol
を扱っていない、私が得るすべては、文字列、self.cb
を使用するのとまったく同じであることcol
を持つ単一のself.col
です。クラス内でself.
の後に変数を使用することはできますか?
「別の関数」の 'self.cb.Text'からテキストを取得し、このテキストを「別の関数」に取得して' self.newVal'に追加すると、プログラムはこれを自動的に付加しません。手動で追加する必要があります。 – furas
'self.col'は常に値を変更できるので可変です。あなたが何を期待しているかは不明です。あなたの問題は、 'Textbox()'を1つの変数に代入して以前の値を上書きし、以前の 'Textbox()'へのアクセス権を持たないためです - リスト 'self.all_cb.append(self.cb)' 'self.all_cb [0] .Text'、' self.all_cb [1] .Text'などにアクセスします。 – furas