PyGTK - Contenitori

La libreria PyGTK fornisce diverse classi contenitore per controllare il posizionamento dei widget all'interno di una finestra. Il modo più semplice è usare un filefixed container class e posizionare un widget al suo interno specificando le sue coordinate assolute misurate in pixel.

Seguiamo ora questi passaggi:

Step 1 - Dichiarare un oggetto del fixed class

fixed = gtk.Fixed()

Step 2 - Crea un widget pulsante e aggiungilo al contenitore fisso utilizzando put()metodo che necessita di coordinate x e y. Qui, il pulsante verrà posizionato nella posizione (100,100).

btn = gtk.Button("Hello")
fixed.put(btn, 100,100)

Step 3- È possibile posizionare più controlli nel contenitore fisso. E aggiungilo alla finestra di primo livello e richiama il fileshow_all() metodo

self.add(fixed)
self.show_all()

Questo layout assoluto, tuttavia, non è adatto per i seguenti motivi:

  • La posizione del widget non cambia anche se la finestra viene ridimensionata.
  • L'aspetto potrebbe non essere uniforme su diversi dispositivi di visualizzazione con risoluzioni diverse.
  • La modifica del layout è difficile in quanto potrebbe essere necessario ridisegnare l'intero modulo.

Quello che segue è il file original window -

Quello che segue è il file resized window -

La posizione del pulsante è invariata qui.

L'API PyGTK fornisce classi container per una migliore gestione del posizionamento dei widget all'interno del container. I vantaggi dei gestori di layout rispetto al posizionamento assoluto sono:

  • I widget all'interno della finestra vengono ridimensionati automaticamente.
  • Assicura un aspetto uniforme su dispositivi di visualizzazione con diverse risoluzioni.
  • È possibile aggiungere o rimuovere widget dinamicamente senza dover riprogettare.

gtk.Container funge da classe base per le seguenti classi:

  • gtk.ButtonBox
  • gtk.Box
  • gtk.Alignment
  • gtk.EventBox
  • gtk.Table