wxPython. SetFocus () для идентификатора - PullRequest
0 голосов
/ 20 января 2011

Мне просто интересно, есть ли способ установить фокус, скажем, wx.TextCtrl () на основе его идентификатора, а не его имени.

Обычно вы делаете что-то вроде ...

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

и затем фокус устанавливается на текст.Однако у меня будет неопределенное количество wx.TextCtrls, и у меня будет цикл для их создания с разными идентификаторами.Мне интересно, есть ли такой способ сделать это?

'id#'.SetFocus() #Set focus to TextCtrl with id = id#

Я вижу способ сделать это с помощью словарей, но я предполагаю, что есть лучший способ сделать это.

Спасибо,

1 Ответ

6 голосов
/ 20 января 2011

Я никогда не использую идентификаторы wx, потому что есть лучшие способы. Я бы порекомендовал сделать что-то вроде этого:

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