ID上的wxPython.SetFocus()

ID上的wxPython.SetFocus(),wxpython,setfocus,Wxpython,Setfocus,我只是想知道是否有一种方法可以根据wx.TextCtrl的ID而不是名称来设置它的焦点 通常你会做一些像 text = wx.TextCtrl(self, 100, '') text.SetFocus() 然后重点放在文本上。然而,我将有一个未确定数量的wx.TextCtrls,我将有一个循环来生成它们,所有这些都使用不同的ID。我想知道他们的做法是否是这样的 'id#'.SetFocus() #Set focus to TextCtrl with id = id# 我看到了一种使用字典的方

我只是想知道是否有一种方法可以根据wx.TextCtrl的ID而不是名称来设置它的焦点

通常你会做一些像

text = wx.TextCtrl(self, 100, '')
text.SetFocus()
然后重点放在文本上。然而,我将有一个未确定数量的wx.TextCtrls,我将有一个循环来生成它们,所有这些都使用不同的ID。我想知道他们的做法是否是这样的

'id#'.SetFocus() #Set focus to TextCtrl with id = id#
我看到了一种使用字典的方法,但我认为有更好的方法


谢谢,

我从不使用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()
self.FindWindowById(id, self).SetFocus()
或者,当字典比列表更有意义时,你可以使用字典,这取决于你需要如何查找它们

如果您很难使用ID,可以尝试以下方法:

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

...

self.controls[12].SetFocus()
self.FindWindowById(id, self).SetFocus()

我从不使用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()
self.FindWindowById(id, self).SetFocus()
或者,当字典比列表更有意义时,你可以使用字典,这取决于你需要如何查找它们

如果您很难使用ID,可以尝试以下方法:

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

...

self.controls[12].SetFocus()
self.FindWindowById(id, self).SetFocus()