From bebdc195ab2e25c1049b87ab8ba96f7ecf964f92 Mon Sep 17 00:00:00 2001 From: CarlosC Date: Sat, 26 Jan 2013 19:55:38 +0000 Subject: Posicion del circulo de acuerdo al valor del slider horizontal --- diff --git a/example.py b/example.py index c3ea56b..723003d 100755 --- a/example.py +++ b/example.py @@ -2,40 +2,90 @@ import gtk import gobject +DELAY = 20 class MyApp(): - + def __init__(self): window = gtk.Window() - vadjustment = gtk.Adjustment(0, 0, 100, 5, 10, 0) - hadjustment = gtk.Adjustment(0, 0, 100, 5, 10, 0) hbox = gtk.HBox() vbox = gtk.VBox() - hslide = gtk.HScale(vadjustment) - vslide = gtk.VScale(hadjustment) - - drawing_area = gtk.DrawingArea() - drawing_area.set_size_request(600, 600) + + #asignacion de variables a widgest de gtk + self.vadjustment = gtk.Adjustment() + self.hadjustment = gtk.Adjustment() + + #asignacion de valores por defecto + self.vadjustment.set_upper(100) + self.vadjustment.set_value(0) + self.hadjustment.set_upper(100) + self.hadjustment.set_value(0) + + #asignacion de propiedades de widgets + self.vslide = gtk.VScale(self.vadjustment) + self.hslide = gtk.HScale(self.hadjustment) + self.vslide.set_digits(0) + self.hslide.set_digits(0) + + #variable global para desplazamiento del slide + self.increment = 1 + #self.changed_value = 0 + + #asignacion de variables a widgest de gtk + self.drawing_area = gtk.DrawingArea() + self.drawing_area.set_size_request(600, 600) self.pixbuf = gtk.gdk.pixbuf_new_from_file('images/arco.jpg') window.connect('destroy', self.destroy) - drawing_area.connect('configure_event', self.__configure_cb) - drawing_area.connect('expose-event', self.__expose_cb) - - #window.add(drawing_area) + self.drawing_area.connect('configure_event', self.__configure_cb) + self.drawing_area.connect('expose-event', self.__expose_cb) + + #eventos de widgets + self.hslide.connect('key-press-event', self.__capturar_valor_cb) + #self.drawing_area.connect('expose-event', self.__area_expose_cb) + + #a;andiendo widgets dentro del contenedor principal window.add(hbox) hbox.add(vbox) - hbox.add(vslide) - vbox.add(drawing_area) - vbox.add(hslide) - - window.show() - vbox.show() - hbox.show() - drawing_area.show() - vslide.show() - hslide.show() + vbox.add(self.drawing_area) + vbox.add(self.hslide) + hbox.add(self.vslide) + + #mostrando los widgets + window.show_all() + + #invocacion de la funcion que realiza loop del slider + gobject.timeout_add(DELAY, self.__value_changed_cb, self.hslide) + + #funcion que hace el loop de los valores del slider + def __value_changed_cb(self, hslide): + self.hadjustment.value += self.increment + + if self.hadjustment.value >= 100: + self.increment *= -1 + elif self.hadjustment.value <= 0: + self.increment *= -1 + + self.hslide = gtk.HScale(self.hadjustment) + + return True + + #funcion que captura el valor del slider al pulsar una tecla + def __capturar_valor_cb(self, hslide, event): + self.changed_value = hslide.get_value() + #valida el estilo del area de dibujo + self.style = self.drawing_area.get_style() + self.gc = self.style.fg_gc[gtk.STATE_NORMAL] + #convierte el valor de changed_value a int + self.cv = (((int(self.changed_value)) * 600) / 100) + #invoca a la funcion que dibuja la pelota de acuerdo a los valores del slider + self.draw_ball(self.cv,self.cv) + print self.cv + + #funcion que dibuja la pelota + def draw_ball(self, x, y): + self.drawing_area.window.draw_arc(self.gc, False, x, y*0, 70, 70, 0, 360*64) def destroy(self, window, data=None): gtk.main_quit() -- cgit v0.9.1