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:
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()
|