Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlosC <ccarvallo@tecnopy.org>2013-01-26 19:55:38 (GMT)
committer CarlosC <ccarvallo@tecnopy.org>2013-01-26 19:55:38 (GMT)
commitbebdc195ab2e25c1049b87ab8ba96f7ecf964f92 (patch)
tree293628d11af3a5471a5328bcf2c078476ecc581b
parent81e650b4ad8b74cb5a91cc67573812e22c447457 (diff)
Posicion del circulo de acuerdo al valor del slider horizontal
-rwxr-xr-xexample.py94
1 files changed, 72 insertions, 22 deletions
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()