Hello,

I am new to Python/wxPython and am experiencing first problems. I have
a dialog which includes a SpinCtrl and a Slider. I want the Slider to
affect the SpinCtrl and vice versa
(http://wiki.wxpython.org/index.cgi/ChallengeDemos#Part1).

The code I wrote does, however, not work correctly. The event EVT_SPIN
is never handled (even though I wrote a handler), and in the handler of
EVT_SCROLL_CHANGED I do not obtain the modified value, but the value
before the control has changed.

Any feedback would be greatly appreciated.
To clarify my problem, here's the code (Python2.4, wxPython 2.6) :

import wx

class AppFrame(wx.Frame):
    def OnSpinGeneral(self, event):
        b = wx.MessageBox("never reached")

    def OnSpin(self, event):
        # I tried to use Skip so that the changing of the value would
take place before
        # I invoke GetValue(), however this has no effect
        event.Skip()

        print self.spin.GetValue()
        self.slider.SetValue(self.spin.GetValue())

    def OnScrollChanged(self, event):
        self.spin.SetValue(self.slider.GetValue())

    def __init__(self):
        wx.Frame.__init__( self,
                          None, -1, "",
                          #size=FRAME_SIZE,
                          style=wx.DEFAULT_FRAME_STYLE )
        self.sizer = wx.BoxSizer( wx.VERTICAL )



        self.spin = wx.SpinCtrl(self, min = 0, max = 50)
        self.slider = wx.Slider(self, 1, 6, 0, 50)

        self.sizer.Add(self.spin)
        self.sizer.Add(self.slider)

        self.Bind(wx.EVT_SCROLL_CHANGED, self.OnScrollChanged,
self.slider)
        self.Bind(wx.EVT_SPIN_UP, self.OnSpin, self.spin)
        self.Bind(wx.EVT_SPIN_DOWN, self.OnSpin, self.spin)
        self.Bind(wx.EVT_SPIN, self.OnSpinGeneral, self.spin)

        self.SetSizer(self.sizer)
        self.SetAutoLayout(1)
        self.Show(1)

app = wx.PySimpleApp()
frame = AppFrame()
app.MainLoop()

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to