2011-01-19 45 views
0

我只是想知道是否有一種方法來設置基於它的ID而不是它的名稱的wx.TextCtrl()的焦點。wxPython .SetFocus()在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()