ID上的wxPython .SetFocus()

时间:2011-01-19 21:30:40

标签: wxpython setfocus

我只是想知道是否有办法根据其ID而不是名称来设置wx.TextCtrl()的焦点。

通常你会做类似的事情......

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

然后焦点设置在文本上。然而,我将有一个未确定数量的wx.TextCtrls,我将有一个循环来制作它们,所有具有不同的ID。我想知道他们是不是这样做的方式?

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

我看到了一种用字典做的方法,但我假设有一种更好的方法可以做到这一点。

谢谢,

1 个答案:

答案 0 :(得分:6)

我从不使用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()