10.3. Contenedor Fijo (Fixed)

El contenedor Fixed (Fijo) permite situar controles en una posición fija dentro de su ventana, relativa a su esquina superior izquierda. La posición de los controles se puede cambiar dinámicamente.

Sólo hay dos llamadas asociadas al control fijo:

  fixed = gtk.Fixed()

  fixed.put(widget, x, y)

  fixed.move(widget, x, y)

La función gtk.Fixed() permite crear un nuevo contenedor Fixed.

El método put() coloca al control en el contenedor fijo en la posición especificada por x e y.

El método move() te permite mover el control especificado a una nueva posición.

El ejemplo fixed.py ilustra cómo usar el contenedor Fixed . La figura Figura 10.2, “Ejemplo de Fijo” muestra el resultado:

Figura 10.2. Ejemplo de Fijo

Ejemplo de Fijo

El código fuente de fixed.py es:

    1	#!/usr/bin/env python
    2	
    3	# ejemplo fixed.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class FixedExample:
   10	    # Esta retrollamada mueve el botón a una nueva posición
   11	    # en el contenedor Fixed.
   12	    def move_button(self, widget):
   13	        self.x = (self.x+30)%300
   14	        self.y = (self.y+50)%300
   15	        self.fixed.move(widget, self.x, self.y) 
   16	
   17	    def __init__(self):
   18	        self.x = 50
   19	        self.y = 50
   20	
   21	        # Creamos una nueva ventana
   22	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	        window.set_title("Fixed Container")
   24	
   25	        # Conectamos el evento "destroy" a un manejador de señales
   26	        window.connect("destroy", lambda w: gtk.main_quit())
   27	 
   28	        # Fija el grosor del borde de ventana
   29	        window.set_border_width(10)
   30	
   31	        # Creamos un contenedor Fixed
   32	        self.fixed = gtk.Fixed()
   33	        window.add(self.fixed)
   34	        self.fixed.show()
   35	  
   36	        for i in range(1, 4):
   37	            # Crea un nuevo toón con la etiqueta "Press me"
   38	            button = gtk.Button("Press me")
   39	  
   40	            # Cuando el botón recibe la señal "clicked" llamará al
   41	            # método move_button().
   42	            button.connect("clicked", self.move_button)
   43	  
   44	            # Empaquetamos el botón en la ventana del contenedor fijo
   45	            self.fixed.put(button, i*50, i*50)
   46	  
   47	            # El paso final es mostrar el control recién creado
   48	            button.show()
   49	
   50	        # Mostramos la ventana
   51	        window.show()
   52	
   53	def main():
   54	    # Entramos en el bucle de eventos
   55	    gtk.main()
   56	    return 0
   57	
   58	if __name__ == "__main__":
   59	    FixedExample()
   60	    main()