[wxPython-users] Anyone ever thought of a "floating point" slider ?

Stef Mientki s.mientki at ru.nl
Sun Dec 16 06:31:48 PST 2007



jmf wrote:
> > Stef Mientki
>
> I've a parameter that physically ranges between 0 and 10.
> Now I use a Slider to set that parameter.
> I want to achieve a resolution of 1%.
> So the step size should be 0.1.
> AFAIK, a slider can only work with integers.
>
> Any alternative solutions ?
>
> ---
>
> Building its own display!?
I was afraid of that ;-)
cheers,
Stef
>
> Jean-Michel Fauth, Switzerland
>
> # -*- coding: iso-8859-1 -*-
> #--------------------------------------------------------------------
> # Name:      aslider2.py
> # Purpose:
> # Author:    Jean-Michel Fauth, Switzerland
> # Copyright:
> # Licence:   None
> #--------------------------------------------------------------------
> # os dev:    w2k sp4
> # py dev:    Python 2.5.1
> # wx dev:    wxPython 2.8.7.1
> # Revision:  16 December 2007
> #--------------------------------------------------------------------
>
> import wx
>
> #--------------------------------------------------------------------
>
> class MyPanel(wx.Panel):
>
>     def __init__(self, parent, id):
>         wx.Panel.__init__(self, parent, id, wx.DefaultPosition, 
> wx.DefaultSize)
>         self.parent = parent
>
>         self.UserMinValue = 0
>         self.UserMaxValue = 10
>         self.UserValue = 0.0
>
>         self.SliderMinValue = 0
>         self.SliderMaxValue = 100
>         self.SliderValue = 0
>
>         self.statxt1 = wx.StaticText(self, wx.ID_ANY, 'left', 
> style=wx.ST_NO_AUTORESIZE | wx.ALIGN_LEFT)
>         self.statxt2 = wx.StaticText(self, wx.ID_ANY, 'middle', 
> style=wx.ST_NO_AUTORESIZE | wx.ALIGN_CENTRE)
>         self.statxt3 = wx.StaticText(self, wx.ID_ANY, 'right', 
> style=wx.ST_NO_AUTORESIZE | wx.ALIGN_RIGHT)
>
>         self.statxt1.SetLabel(str(self.UserMinValue))
>         self.statxt2.SetLabel(str(self.UserValue))
>         self.statxt3.SetLabel(str(self.UserMaxValue))
>
>         self.slider = wx.Slider(self, wx.ID_ANY, self.SliderValue, \
>                                 self.SliderMinValue, 
> self.SliderMaxValue, \
>                                 style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)
>         self.slider.SetTickFreq(10)
>
>         self.slider.Bind(wx.EVT_SCROLL, self.OnScroll)
>
>         b = 20
>         hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
>         hsizer1.Add(self.statxt1, 1, wx.RIGHT, b)
>         hsizer1.Add(self.statxt2, 1, wx.LEFT | wx.RIGHT, b)
>         hsizer1.Add(self.statxt3, 1, wx.LEFT, b)
>
>         b = 4
>         vsizer1 = wx.BoxSizer(wx.VERTICAL)
>         vsizer1.Add(hsizer1, 0, wx.EXPAND | wx.ALL, b)
>         vsizer1.Add(self.slider, 0, wx.EXPAND | wx.LEFT | wx.TOP | 
> wx.BOTTOM, b)
>
>         self.SetSizerAndFit(vsizer1)
>         self.parent.SetClientSize((500, vsizer1.GetSize()[1]))
>         self.parent.CentreOnScreen()
>
>     def OnScroll(self, event):
>         self.SliderValue = self.slider.GetValue()
>         self.UserValue = self.SliderValue / 10.0
>         self.statxt2.SetLabel(str(self.UserValue))
>
> #--------------------------------------------------------------------
>
> class MyFrame(wx.Frame):
>
>     def __init__(self, parent, id):
>         title = 'Slider...'
>         pos = wx.DefaultPosition
>         size = wx.DefaultSize
>         sty = wx.DEFAULT_FRAME_STYLE
>         wx.Frame.__init__(self, parent, id, title, pos, size, sty)
>
>         self.panel = MyPanel(self, wx.NewId())
>
>         self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
>
>     def OnCloseWindow(self, event):
>         self.Destroy()
>
> #--------------------------------------------------------------------
>
> app = wx.PySimpleApp()
> frame = MyFrame(None, wx.ID_ANY)
> frame.Show()
> app.MainLoop()
>
> #eof-----------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: wxPython-users-unsubscribe at lists.wxwidgets.org
> For additional commands, e-mail: wxPython-users-help at lists.wxwidgets.org
>
>
>




More information about the wxpython-users mailing list