hi
      I am trying to change the value in the slider bar but it is allowing to 
change the value within the range given in the 
      adjustment. if the current values are 1,2,4,5,6,7 then i want slider 
should show 1,2,4,8,16,32,64.how can i do this any one can help me out this 
problem? even the set_value(newvalue) function changes values within the lower 
and upper values but that changes are also not displayed on the slider.
      


Thanks,
Sibtey

my code :

import pygtk
pygtk.require('2.0')
import gtk


class Scale(object):
    """A scale that adheres to increment steps"""
    def __init__(self,x):
        self.a =  x
        self.set_update_policy(gtk.UPDATE_CONTINUOUS)
        
        self.set_size_request(150,35)
        self.connect("change-value", self.adjust)

    def adjust(self, range, scroll, value):
        adj = self.get_adjustment()
        lower = adj.get_property('lower')       
        upper = adj.get_property('upper')
        incr = adj.get_property('step-increment')
        
        value -= (value % incr)
        xx =  min(max(lower, value), upper)
        
        if int(value) == 7:
            a = 64
        elif int(value) == 6:
            a = 32
        elif int(value) == 5:
            a = 16
        elif int(value) == 4:
            a = 8
        elif int(value) == 3:
            a = 4
        elif int(value) == 2:
            a = 2
        elif int(value) == 1:
            a = 1

        range.set_value(a)    
        print a,  self.get_value()


class HScale(gtk.HScale, Scale):
    def __init__(self, x, *args):
        gtk.HScale.__init__(self, *args)
        Scale.__init__(self,x)




class RangeWidgets:

    def __init__(self):
        # Standard window-creating stuff
        self.window = gtk.Window (gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", lambda w: gtk.main_quit())
        self.window.set_title("range controls")

        box1 = gtk.VBox(False, 0)
 

       # adj2 = gtk.Adjustment.set_all(1.0,1.0,64.0,1.0,1.0,2.0)
        adj2 = gtk.Adjustment(1.0,1.0,7.0,1.0,1.0,0.0)



       # adj2.connect("value_changed", self.cb_digits_scale)
        scale = HScale('k', adj2)
        scale.set_digits(0)
        box1.pack_start(scale, True, True, 0)
        scale.show()

        box1.show()
        self.window.add(box1)
        self.window.show()

def main():
    gtk.main()
    return 0            

if __name__ == "__main__":
    RangeWidgets()
    main() 
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to