ПРИМЕЧАНИЕ: Это, как представляется, проблема с OSX.Как установить значение wx.combobox путем размещения события
Приведенный ниже код демонстрирует проблему, с которой сталкиваюсь. Я создаю wx.ComboBox и пытаюсь имитировать его функциональность для целей тестирования, отправив событие wxEVT_COMMAND_COMBOBOX_SELECTED ... это событие странно отлично работает для wx.Choice, но оно ничего не делает для ComboBox.
Не может быть другого события, которое я могу опубликовать в выпадающем списке, но, возможно, мне что-то не хватает.
Я бег этого кода на Python 2.5 на Mac OSX 10.5.8
import wx
app = wx.PySimpleApp()
def on_btn(evt):
event = wx.CommandEvent(wx.wxEVT_COMMAND_COMBOBOX_SELECTED,combobox.Id)
event.SetEventObject(combobox)
event.SetInt(1)
event.SetString('bar')
combobox.Command(event)
app.ProcessPendingEvents()
frame = wx.Frame(None)
panel = wx.Panel(frame, -1)
# This doesn't work
combobox = wx.ComboBox(panel, -1, choices=['foo','bar'])
# This works
#combobox = wx.Choice(panel, -1, choices=['foo','bar'])
combobox.SetSelection(0)
btn = wx.Button(panel, -1, 'asdf')
btn.Bind(wx.EVT_BUTTON, on_btn)
sz = wx.BoxSizer()
sz.Add(combobox)
sz.Add(btn)
panel.SetSizer(sz)
frame.Show()
app.MainLoop()
UPDATE: Я подключил выпадающий в обработчик wx.EVT_COMBOBOX, чтобы увидеть, какое событие типа бытия и я получил идентификатор 10016, который соответствует wxEVT_COMMAND_COMBOBOX_SELECTED ... поэтому генерация этого командного события, конечно, ДОЛЖНА привести к обновлению ComboBox.
Я так понял, так как это работает на наших системах окон. –