2011-01-19 2 views
0

wx.TextCtrl()의 이름 대신 ID를 기반으로 포커스를 설정하는 방법이 있는지 궁금합니다.wxPython .SetFocus() on ID

보통은 ... 같은

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

뭔가를 할 것이라고하여 초점은 텍스트에 설정되어 있습니다. 그러나 나는 wx.TextCtrls의 미정 된 양을 가지게 될 것이고 나는 그것들을 만들기위한 루프를 가질 것이다. 나는 그들이 이런 식으로하는 방법인지 궁금해?

'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()