Tabla de contenidos
Cuando crees un programa, querrás poner más de un control en una ventana. Nuestro primer ejemplo holamundo solo usaba un control para que pudieramos usar simplemente el método add() de la clase GtkContainer para "empaquetar" el control en la ventana. Pero cuando quieres poner más de un control en la ventana, ¿cómo controlas el sitio donde ese control se coloca? Aqui es donde la colocación entra en juego.
La mayoría del empaquetamiento se realiza utilizando cajas. Estos contenedores invisibles de controles pueden ser de dos tipos, una caja horizontal, y una caja vertical. Cuando empaquetamos controles en una caja horizontal, los objetos se insertan horizontalmente de izquierda a derecha o de derecha a izquierda dependiendo de la llamada que se use. En una caja vertical, los controles se empaquetan de arriba a abajo o viceversa. Puedes usar una combinación de cajas dentro de cajas para obtener el efecto deseado.
Para crear una nueva caja horizontal, usamos una llamada a gtk.HBox(), y para cajas verticales, gtk.VBox() . Los métodos pack_start() y pack_end() se utilizan para colocar objetos dentro de estos contenedores. El método pack_start() empezará en la parte de arriba e irá bajando en una vbox, y de izquierda a derecha en una hbox. El método pack_end() hará lo contrario, empaquetará de abajo a arriba en una vbox, y de derecha a izquierda en una hbox. Usando estos métodos, podemos alinear a la derecha o a la izquierda nuestros controles y se pueden mezclar de la forma necesaria para obtener el efecto deseado. Usaremos pack_start() en la mayoría de nuestros ejemplos. Un objeto puede ser otro contenedor o un control. De hecho, muchos controles son en realidad contenedores por ellos mismos, incluyendo el botón, pero normalmente sólo usamos una etiqueta dentro de un botón.
Usando estas llamadas, GTK sabe donde quieres colocar tus controles y asi puede cambiar el tamaño automáticamente y otras cosas interesantes. Como puedes imaginar, este método nos da bastante flexibilidad al colocar y crear controles.