1

名前ではなく ID に基づいて wx.TextCtrl() などのフォーカスを設定する方法があるかどうか疑問に思っています。

通常、次のようなことをします...

text = wx.TextCtrl(self, 100, '')
text.SetFocus()

次に、フォーカスがテキストに設定されます。ただし、未定の量の wx.TextCtrls があり、それらを作成するためのループがあり、すべて異なる ID を使用します。彼らがこのようにする方法なのだろうか?

'id#'.SetFocus() #Set focus to TextCtrl with id = id#

辞書を使ってそれを行う方法を見ていますが、これを行うより良い方法があると思います。

ありがとう、

4

1 に答える 1

7

より良い方法があるので、私はwxIDを使用しません。私はこのようなことをすることをお勧めします:

self.controls = []
for i in range(100):
    control = wx.TextCtrl(self, -1, '')
    self.controls.append(control)
    sizer.Add(control)

...

self.controls[12].SetFocus()

または、検索方法に応じて、リストよりも意味のある辞書を使用できます。

IDの使用に固執している場合は、次のような方法を試すことができます。

self.FindWindowById(id, self).SetFocus()
于 2011-01-19T21:37:08.087 に答える