PyGTK - Aula de Notebook

O widget do Notebook é um contêiner com guias. Cada guia neste contêiner contém uma página diferente e as páginas são vistas de maneira sobreposta. Qualquer página desejada torna-se visível clicando no rótulo da guia. Os rótulos podem ser configurados para serem exibidos na parte superior ou inferior, à esquerda ou à direita. Um widget de contêiner com outros widgets colocados nele ou um único widget é colocado em cada página.

Se os dados a serem exibidos forem muito grandes em uma visualização, eles serão agrupados em páginas diferentes, cada uma colocada em uma guia de um widget do Notebook. Este tipo de controle é amplamente utilizado. O navegador da Internet, por exemplo, usa essa exibição com guias para renderizar páginas diferentes em guias diferentes.

O seguinte é um construtor da classe gtk.Notebook -

gtk.Notebook()

A seguir estão os métodos mais usados ​​da classe gtk.Notebook -

  • append_page(child, label)- Isso anexa uma página ao bloco de notas contendo um widget especificado por tab_label como o rótulo na guia. Se tab_label pode ser Nenhum para usar um rótulo padrão.

  • insert_page(child, label, position) - Isso insere uma página no bloco de notas no local especificado pela posição.

  • remove_page(index) - Isso remove uma página no índice especificado.

  • get_current_page() - Isso retorna o índice da página da página atual.

  • set_current_page(index) - Isso muda para o número da página especificado pelo índice.

  • set_show_tabs()- Se for falso, as guias não ficarão visíveis. Isso é verdadeiro por padrão.

  • set_tab_pos(pos)- Isso define a borda em que as guias para alternar páginas no bloco de notas são desenhadas. As constantes predefinidas são -

    • gtk.POS_LEFT

    • gtk.POS_RIGHT

    • gtk.POS_TOP

    • gtk.POS_BOTTOM

  • set_tab_label_text(child, text) - Isso cria um novo rótulo com o texto especificado e o define como o rótulo da guia para a página que contém o filho.

O widget gtk.Notebook emite os seguintes sinais -

alterar a página atual Isso é emitido quando a solicitação de página para frente ou para trás é emitida
focus-tab Isso é emitido quando o foco é alterado por tabulação.
página adicionada Isso é emitido quando uma página é adicionada ao bloco de notas.
página removida Isso é emitido depois que uma página é removida do bloco de notas.
página de seleção Isso é emitido quando uma nova página filha é selecionada.
mudar de página Isso é emitido quando a página do bloco de notas é alterada.

Exemplo

No exemplo a seguir, um gtk.Notebook com três páginas é colocado em um gtk.Window de nível superior. A primeira página contém um VBox no qual um rótulo e um campo de entrada são compactados. A segunda página rotulada 'qualifications' tem um HButtonBox no qual três widgets RadioButton mutuamente exclusivos são adicionados. A terceira página possui um objeto TextView. Os rótulos da página são exibidos na parte superior.

Observe o código -

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Notebook Demo")
      self.set_default_size(250, 200)
		
      nb = gtk.Notebook()
      nb.set_tab_pos(gtk.POS_TOP)
      vbox = gtk.VBox(False, 5)
		
      vb = gtk.VBox()
      hbox = gtk.HBox(True, 3)
		
      valign = gtk.Alignment(0.5,0.25, 0, 0)
      lbl = gtk.Label("Name of student")
		
      vb.pack_start(lbl, True, True, 10)
      text = gtk.Entry()
		
      vb.pack_start(text, True, True, 10)
      valign.add(vb)
		
      vbox.pack_start(valign)
      nb.append_page(vbox)
      nb.set_tab_label_text(vbox, "Name")
      hb = gtk.HButtonBox()
		
      btn1 = gtk.RadioButton(None,"Degree")
      hb.add(btn1)
		
      btn2 = gtk.RadioButton(btn1,"P.G.")
      hb.add(btn2)
		
      btn3 = gtk.RadioButton(btn1,"Doctorate")
      hb.add(btn3)
		
      nb.append_page(hb)
      nb.set_tab_label_text(hb, "Qualification")
		
      tv = gtk.TextView()
      nb.append_page(tv)
      nb.set_tab_label_text(tv, "about")
		
      self.add(nb)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
if __name__ == '__main__':
   PyApp()
   gtk.main()

Após a execução, o código acima exibe um Notebook com três páginas -