我有多个小部件,格式如下:
self.sl_qZone1 = wx.Slider(self, -1, 50, integer=True, 0, 100, size=(sliderWidthHeight), style=wx.SL_HORIZONTAL)
self.tc_qZone1 = wx.TextCtrl(panel, -1, 50, (0,0), style=wx.TE_CENTER)
我有一些事件绑定到十几个滑块/文本控件:
wx.FindWindowByName(mvName['sl0']).Bind(wx.EVT_SLIDER, lambda event: self.sliderUpdate(event, wx.FindWindowByName(mvName['sl0']), wx.FindWindowByName(mvName['tc0']),), wx.FindWindowByName(mvName['sl0']))
wx.FindWindowByName(mvName['tc0']).Bind(wx.EVT_CHAR, lambda event: self.tcVolUpdate(event, wx.FindWindowByName(mvName['sl0']), wx.FindWindowByName(mvName['tc0']),), wx.FindWindowByName(mvName['tc0']))
然后我有这些功能:
def sliderUpdate(self, event, slider, textctrl):
textctrl.SetValue(str(slider.GetValue()))
def tcVolUpdate(self, event, slider, textctrl):
slider.SetValue(int(textctrl.GetValue()))
当我修改滑块时效果很好——它用适当的值更新了 textctrl。但是当我尝试编辑 textctrl 时,它让我选择文本但实际上并没有编辑它。我也试过wx.EVT_TEXT_ENTER
了,没有运气。
如何使文本 ctrl 可更新并让它更新滑块的值?