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

我从不使用 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()
于 2011-01-19T21:37:08.087 回答