2011-01-19 11 views
0

名前の代わりにIDに基づいてwx.TextCtrl()のフォーカスを設定する方法があるかどうかは疑問です。wxPython .SetFocus()on ID

通常次のような...

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

何かをするだろうし、その後、フォーカスは、テキストに設定されています。しかし、私は未定の量のwx.TextCtrlsを持つつもりです。それらを作るためのループを、すべて異なるIDで使用します。私は彼らがこれのようにする方法であるかどうか疑問に思っていますか?

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

私は辞書でそれを行う方法を参照してください、私はこれを行うためのより良い方法があると仮定しています。

ありがとう、

答えて

4

良い方法があるので、私は決してwx IDを使用しません。

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()