我只是想知道是否有办法根据其ID而不是名称来设置wx.TextCtrl()的焦点。
通常你会做类似的事情......
text = wx.TextCtrl(self, 100, '')
text.SetFocus()
然后焦点设置在文本上。然而,我将有一个未确定数量的wx.TextCtrls,我将有一个循环来制作它们,所有具有不同的ID。我想知道他们是不是这样做的方式?
'id#'.SetFocus() #Set focus to TextCtrl with id = id#
我看到了一种用字典做的方法,但我假设有一种更好的方法可以做到这一点。
谢谢,
答案 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()