PyGTK - Classe ScrolledWindow

La finestra a scorrimento viene creata per accedere ad altri widget di un'area più grande della finestra principale. Alcuni widget come TreeView e TextView del supporto nativo per lo scorrimento. Per altri come Etichetta o Tabella, dovrebbe essere fornita una finestra.

La seguente sintassi viene utilizzata per il costruttore della classe gtk.ScrolledWindow:

sw = gtk.ScrolledWindow(hadj, vadj)

I seguenti sono i metodi della classe gtk.ScrolledWindow -

  • ScrolledWindow.set_hadjustment() - Questo imposta la regolazione orizzontale su un oggetto gtk.Adjustment

  • ScrolledWindow.set_vadjustment() - Questo imposta la regolazione verticale su un oggetto gtk.Adjustment

  • ScrolledWindow.set_Policy (hpolicy, vpolicy)- Questo imposta le proprietà "hscrollbar_policy" e "vscrollbar_policy". Viene utilizzata una delle seguenti costanti predefinite:

    • gtk.POLICY_ALWAYS - La barra di scorrimento è sempre presente

    • gtk.POLICY_AUTOMATIC - La barra di scorrimento è presente solo se necessario, ovvero i contenuti sono più grandi della finestra

    • gtk.POLICY_NEVER - La barra di scorrimento non è mai presente

  • ScrolledWindow.add_with_viewport(child) - Questo metodo viene utilizzato per aggiungere un widget (specificato dal figlio) senza funzionalità di scorrimento native alla finestra a scorrimento. Questa è una funzione comoda che equivale ad aggiungerechild ad un gtk.Viewport, quindi aggiungendo la visualizzazione alla finestra a scorrimento.

Il codice seguente aggiunge una finestra a scorrimento attorno a un oggetto gtk.Table con dimensioni 10 per 10. Poiché un oggetto Tabella non supporta automaticamente le regolazioni, viene aggiunto in una finestra.

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

Due cicli nidificati vengono utilizzati per aggiungere 10 righe di 10 colonne ciascuna. Un widget gtk.Button viene posizionato in ogni cella.

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)

Questa tabella abbastanza grande viene ora aggiunta nella finestra a scorrimento insieme a una finestra.

sw.add_with_viewport(table)

Esempio

Rispettare il codice seguente:

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()

Il codice sopra genererà il seguente output: