10.5. Marcos

Los Marcos se pueden usar para encerrar un widget o un grupo de ellos dentro de una caja que, opcionalmente puede llevar un título. La posición del título y el estilo de la caja se puede alterar a tu gusto.

Un Frame (Marco) se puede crear con la siguiente función

  frame = gtk.Frame(label=None)

El label (título) se coloca en la esquina superior izquierda del marco de manera predeterminada. Especificando un valor de None para el argumento label o sin especificar el argumento label hará que no se visualice ningún título. El texto del título se puede cambiar usando el método:

  frame.set_label(label)

La posición del título se puede cambiar usando el método:

  frame.set_label_align(xalign, yalign)

xalign y yalign toman valores entre 0.0 y 1.0. xalign indica la posición del título en la horizontal superior del marco. yalign no se usa por ahora. El valor por defecto de xalign es 0.0 lo que coloca al título en la esquina izquierda del marco.

El siguiente método modifica el estilo de la caja que se usa para rodear el marco.

  frame.set_shadow_type(type)

El argumento type puede tomar uno de los siguientes valores:

  SHADOW_NONE           # sin sombra
  SHADOW_IN             # sombra hacia dentro
  SHADOW_OUT            # sombra hacia fuera
  SHADOW_ETCHED_IN      # sombra abrupta hacia dentro
  SHADOW_ETCHED_OUT     # sombra abrupta hacia fuera (valor predeterminado)

El ejemplo frame.py muestra el uso del control Marco. La figura Figura 10.4. Ejemplo de Marco muestra la ventana resultante:

Figura 10.4. Ejemplo de Marco

Ejemplo de Marco

EL código fuente de frame.py es:

    1   #!/usr/bin/env python
    2   
    3   # example frame.py
    4   
    5   import gtk
    6   
    7   class FrameExample:
    8       def __init__(self):
    9           # Create a new window
   10           window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   11           window.set_title("Frame Example")
   12   
   13           # Here we connect the "destroy" event to a signal handler 
   14           window.connect("destroy", gtk.mainquit)
   15           window.set_size_request(300, 300)
   16   
   17           # Sets the border width of the window.
   18           window.set_border_width(10)
   19   
   20           # Create a Frame
   21           frame = gtk.Frame()
   22           window.add(frame)
   23   
   24           # Set the frame's label
   25           frame.set_label("GTK Frame Widget")
   26   
   27           # Align the label at the right of the frame
   28           frame.set_label_align(1.0, 0.0)
   29   
   30           # Set the style of the frame
   31           frame.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
   32           frame.show()
   33     
   34           # Display the window
   35           window.show()
   36   
   37   def main():
   38       # Enter the event loop
   39       gtk.main()
   40       return 0
   41   
   42   if __name__ == "__main__":
   43       FrameExample()
   44       main()

Los programas calendar.py, label.py y spinbutton.py también usan Marcos.