From 48bab95bba8f182a57bb47244064b63558c7cc35 Mon Sep 17 00:00:00 2001 From: CarlosC Date: Sun, 27 Jan 2013 21:05:12 +0000 Subject: Slider horizontal y vertical funcionando dibujando con relacion al area de dibujo --- diff --git a/example.py b/example.py index 723003d..c4e1f88 100755 --- a/example.py +++ b/example.py @@ -2,7 +2,7 @@ import gtk import gobject -DELAY = 20 +DELAY = 10 class MyApp(): @@ -26,10 +26,14 @@ class MyApp(): self.hslide = gtk.HScale(self.hadjustment) self.vslide.set_digits(0) self.hslide.set_digits(0) + self.vslide.set_draw_value(False) + self.hslide.set_draw_value(False) #variable global para desplazamiento del slide - self.increment = 1 - #self.changed_value = 0 + self.increment_x = 1 + self.increment_y = 1 + self.indicator_x = -1 + self.indicator_y = -1 #asignacion de variables a widgest de gtk self.drawing_area = gtk.DrawingArea() @@ -42,8 +46,9 @@ class MyApp(): 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) + window.connect('key-press-event', self.__key_press_event_cb) + #self.hslide.connect('key-press-event', self.__capturar_valor_hslider_cb) + #self.vslide.connect('key-press-event', self.__capturar_valor_vslider_cb) #a;andiendo widgets dentro del contenedor principal window.add(hbox) @@ -55,37 +60,78 @@ class MyApp(): #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) + #invocacion de la funcion que realiza loop del slider horizontal + gobject.timeout_add(DELAY, self.__hslider_move_cb) - #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 + + #funcion que verifica el estado de los indicadores + def __key_press_event_cb(self, window, event): + gobject.timeout_add(DELAY, self.__vslider_move_cb) + if self.indicator_x == 0: + self.capturar_valor_vslider_cb() + else: + self.capturar_valor_hslider_cb() + + + #funcion que hace el loop de los valores del slider vertical + def __hslider_move_cb(self): + if self.indicator_x < 0: + self.hadjustment.value += self.increment_x + + if self.hadjustment.value >= 100: + self.increment_x *= -1 + elif self.hadjustment.value <= 0: + self.increment_x *= -1 + return True + else: + return False + + #funcion que hace el loop de los valores del slider vertical + def __vslider_move_cb(self): + if self.indicator_y < 0: + self.vadjustment.value += self.increment_y + + if self.vadjustment.value >= 100: + self.increment_y *= -1 + elif self.vadjustment.value <= 0: + self.increment_y *= -1 + return True + else: + return False + + #funcion que captura el valor del slider horizontal al pulsar una tecla + def capturar_valor_hslider_cb(self): + #variable en donde se captura el valor al presionar un tecla + self.hslide_value = self.hslide.get_value() - self.hslide = gtk.HScale(self.hadjustment) - - return True + #convierte el valor de changed_value a int + self.cv_x = (((int(self.hslide_value)) * 600) / 100) - #funcion que captura el valor del slider al pulsar una tecla - def __capturar_valor_cb(self, hslide, event): - self.changed_value = hslide.get_value() + #detener el slider + self.indicator_x = 0 + #impresion temporal de prueba + print self.cv_x + + #funcion que captura el valor del slider vertical al pulsar una tecla + def capturar_valor_vslider_cb(self): + #variable en donde se captura el valor al presionar un tecla + self.vslide_value = self.vslide.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) + self.cv_y = (((int(self.vslide_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 - + self.draw_ball(self.cv_x,self.cv_y) + + #detener el slider + self.indicator_y = 0 + #impresion temporal de prueba + print self.cv_y + #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) + self.drawing_area.window.draw_arc(self.gc, False, x, y, 70, 70, 0, 360*64) def destroy(self, window, data=None): gtk.main_quit() -- cgit v0.9.1