次のようなフォームに複数のウィジェットがあります。
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 を更新可能にして、スライダーの値を更新するにはどうすればよいですか?