PyGTK - Clase ScrolledWindow

La ventana desplazada se crea para acceder a otro widget de área más grande que la ventana principal. Algunos widgets como TreeView y TextView de soporte nativo para el desplazamiento. Para otros, como Etiqueta o Tabla, se debe proporcionar una ventana gráfica.

La siguiente sintaxis se utiliza para el constructor de la clase gtk.ScrolledWindow:

sw = gtk.ScrolledWindow(hadj, vadj)

Los siguientes son los métodos de la clase gtk.ScrolledWindow:

  • ScrolledWindow.set_hadjustment() - Esto establece el ajuste horizontal en un gtk. Objeto de ajuste

  • ScrolledWindow.set_vadjustment() - Esto establece el ajuste vertical en un gtk. Objeto de ajuste

  • ScrolledWindow.set_Policy (hpolicy, vpolicy)- Esto establece las propiedades "hscrollbar_policy" y "vscrollbar_policy". Se utiliza una de las siguientes constantes predefinidas:

    • gtk.POLICY_ALWAYS - La barra de desplazamiento está siempre presente

    • gtk.POLICY_AUTOMATIC - La barra de desplazamiento está presente solo si es necesario, es decir, el contenido es más grande que la ventana

    • gtk.POLICY_NEVER - La barra de desplazamiento nunca está presente

  • ScrolledWindow.add_with_viewport(child) : Este método se utiliza para agregar un widget (especificado por el niño) sin capacidades de desplazamiento nativas a la ventana desplazada. Esta es una función de conveniencia que equivale a agregarchild a un gtk.Viewporty luego agregar la ventana gráfica a la ventana desplazada.

El siguiente código agrega una ventana desplazada alrededor de un objeto gtk.Table con dimensiones de 10 por 10. Dado que un objeto de tabla no admite ajustes automáticamente, se agrega en una ventana gráfica.

sw = gtk.ScrolledWindow()
table = gtk.Table(10,10)

Se utilizan dos bucles anidados para agregar 10 filas de 10 columnas cada una. Se coloca un widget gtk.Button en cada celda.

for i in range(1,11):
   for j in range(1,11):
      caption = "Btn"+str(j)+str(i)
      btn = gtk.Button(caption)
      table.attach(btn, i, i+1, j, j+1)

Esta tabla lo suficientemente grande ahora se agrega en la ventana desplazada junto con una ventana gráfica.

sw.add_with_viewport(table)

Ejemplo

Observe el siguiente código:

import gtk

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      
	  self.set_title("ScrolledWindow and Viewport")
      self.set_size_request(400,300)
      self.set_position(gtk.WIN_POS_CENTER)
      sw = gtk.ScrolledWindow()
      table = gtk.Table(10,10)
      table.set_row_spacings(10)
      table.set_col_spacings(10)
      for i in range(1,11):
         for j in range(1,11):
            caption = "Btn"+str(j)+str(i)
            btn = gtk.Button(caption)
            table.attach(btn, i, i+1, j, j+1)
      sw.add_with_viewport(table)
      self.add(sw)
      
	  self.connect("destroy", gtk.main_quit)
      self.show_all()

PyApp()
gtk.main()

El código anterior generará la siguiente salida: