PyGTK - Classe ScrolledWindow

A janela rolada é criada para acessar outro widget de área maior do que a janela principal. Alguns widgets como TreeView e TextView oferecem suporte nativo para rolagem. Para outros, como Rótulo ou Tabela, deve ser fornecida uma janela de visualização.

A sintaxe a seguir é usada para o construtor da classe gtk.ScrolledWindow -

sw = gtk.ScrolledWindow(hadj, vadj)

A seguir estão os métodos da classe gtk.ScrolledWindow -

  • ScrolledWindow.set_hadjustment() - Isso define o ajuste horizontal para um objeto gtk.Adjustment

  • ScrolledWindow.set_vadjustment() - Isso define o ajuste vertical para um objeto gtk.Adjustment

  • ScrolledWindow.set_Policy (hpolicy, vpolicy)- Isso define as propriedades "hscrollbar_policy" e "vscrollbar_policy". Uma das seguintes constantes predefinidas é usada -

    • gtk.POLICY_ALWAYS - A barra de rolagem está sempre presente

    • gtk.POLICY_AUTOMATIC - A barra de rolagem está presente apenas se necessário, ou seja, o conteúdo é maior do que a janela

    • gtk.POLICY_NEVER - A barra de rolagem nunca está presente

  • ScrolledWindow.add_with_viewport(child) - Este método é usado para adicionar um widget (especificado pelo filho) sem recursos de rolagem nativos à janela rolada. Esta é uma função de conveniência equivalente a adicionarchild para um gtk.Viewporte, em seguida, adicionando a janela de visualização à janela rolada.

O código a seguir adiciona uma janela rolada ao redor de um objeto gtk.Table com dimensões de 10 por 10. Como um objeto Tabela não oferece suporte a ajustes automaticamente, ele é adicionado a uma janela de exibição.

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

Dois loops aninhados são usados ​​para adicionar 10 linhas de 10 colunas cada. Um widget gtk.Button é colocado em cada célula.

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 tabela grande o suficiente agora é adicionada na janela rolada junto com uma janela de visualização.

sw.add_with_viewport(table)

Exemplo

Observe o seguinte 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()

O código acima irá gerar a seguinte saída -