как в заголовке, можно ли добавить пользовательский прослушиватель событий для виджета wx, и если да, то как? В частности, я пытаюсь добавить тот, который слушает изменения атрибутов SelStart и SelEnd для wx.Slider. Спасибо!Пользовательские прослушиватели событий для виджетов wxpython
0
A
ответ
2
Ниже приведен код пользовательского прослушивателя для wx.slider, я вызываю его внутри обработчика другого слушателя.
Вы можете назвать это настраиваемым слушателем с той точки, где SelStart и SelEnd изменяются.
import wx
import wx.lib.newevent
DialogRespondEvent, EVT_DIALOG_RESPOND_EVENT = wx.lib.newevent.NewEvent()
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title,size = (250,150))
self.InitUI()
def InitUI(self):
pnl = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
self.Bind(EVT_DIALOG_RESPOND_EVENT, self.testing)
self.sld = wx.Slider(pnl, value = 10, minValue = 1, maxValue = 100,
style = wx.SL_HORIZONTAL|wx.SL_LABELS)
vbox.Add(self.sld,1,flag = wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL | wx.TOP, border = 20)
self.sld.Bind(wx.EVT_SLIDER, self.OnSliderScroll)
self.txt = wx.StaticText(pnl, label = 'Hello',style = wx.ALIGN_CENTER)
vbox.Add(self.txt,1,wx.ALIGN_CENTRE_HORIZONTAL)
pnl.SetSizer(vbox)
self.Centre()
self.Show(True)
def testing(self,evt):
print "you can do whatever you want here"
def OnSliderScroll(self, e):
obj = e.GetEventObject()
val = obj.GetValue()
font = self.GetFont()
font.SetPointSize(self.sld.GetValue())
self.txt.SetFont(font)
evt = DialogRespondEvent()
wx.PostEvent(self, evt)
ex = wx.App()
Mywin(None,'Slider demo')
ex.MainLoop()
+0
спасибо, я думаю, это нормально –
+0
спасибо, это решило мою проблему –
Выполните любое из событий, перечисленных здесь http://docs.wxwidgets.org/trunk/classwx_slider.html работа для ваших целей? – nbryans
Может быть сложный способ заставить его работать с некоторыми из них, но мне также интересно, возможны ли пользовательские прослушиватели в целом. –
В соответствии с [MSDN doc относительно TrackBar Control] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb760149 (v = vs.85) .aspx) (на котором '' wx.Slider ''), диапазон может быть изменен с кода, но со стороны пользователя нет взаимодействия. В нем также говорится, что если нужно ограничить допустимые позиции ползунка в диапазоне, это должно было быть реализовано программистом. Это то, что вы хотите? – nepix32