PyGTK - Classe de Layout

O gtk.Layout é um widget de contêiner semelhante ao gtk.Fixed. Os widgets são colocados no widget Layout especificando coordenadas absolutas. No entanto, o Layout difere do widget fixo nas seguintes maneiras -

  • O widget de layout pode ter largura e altura infinitas. O valor máximo de largura e altura é limitado pelo tamanho do inteiro sem sinal.

  • Um widget gtk.DrawingArea pode ser incluído em um contêiner de layout. A DrawingArea é uma tela na qual elementos 2D como linha, retângulo, etc. podem ser desenhados.

  • Para colocar o contêiner de Layout na janela de nível superior de dimensões menores, ele pode ser associado às barras de rolagem ou pode ser colocado em uma janela ScrolledWindow.

A classe gtk.Layout tem o seguinte construtor -

gtk.Layout(hadjustment = None, vadjustment = None)

o hadjustment e vadjustment propriedades representam um objeto com um valor limitado ajustável.

A tabela a seguir lista os métodos de layout usados ​​com frequência -

colocar (widget, x, y) Coloca um widget filho nas coordenadas especificadas
set_size (w, h) Define o tamanho do recipiente do Layout para a largura e altura especificadas

O objeto Layout emite o sinal set_scroll_adjustment quando os ajustes associados a ele são alterados.

Exemplo

No exemplo a seguir, um rótulo é ritmado no centro de um contêiner de Layout, que por sua vez deve ser colocado em uma janela de nível superior de tamanho menor. Portanto, ele é adicionado primeiro a uma ScrolledWindow e a ScrolledWindow é então adicionada à janela principal.

Observe o código -

import gtk

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("layout")
      self.set_size_request(300,200)
      self.set_position(gtk.WIN_POS_CENTER)
      sc = gtk.ScrolledWindow()
      lo = gtk.Layout()
      lo.set_size(400,400)
      button = gtk.Button("Press Me")
      lo.put(button, 125,200)
      sc.add(lo)
      self.add(sc)
      self.connect("destroy", gtk.main_quit)
      self.show_all()

PyApp()
gtk.main()

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