PyGTK - Notebook Class
Il widget Notebook è un contenitore a schede. Ogni scheda in questo contenitore contiene una pagina diversa e le pagine vengono visualizzate in modo sovrapposto. Qualsiasi pagina desiderata viene resa visibile facendo clic sull'etichetta della scheda. Le etichette possono essere configurate per essere visualizzate in alto o in basso oppure a sinistra oa destra. Sotto ogni pagina viene posizionato un widget contenitore con altri widget inseriti o un singolo widget.
Se i dati da visualizzare sono troppo grandi in una visualizzazione, vengono raggruppati in pagine diverse, ciascuna collocata in una scheda di un widget Notebook. Questo tipo di controllo è molto diffuso. Il browser Internet, ad esempio, utilizza questa visualizzazione a schede per visualizzare pagine diverse in schede diverse.
Quello che segue è un costruttore della classe gtk.Notebook -
gtk.Notebook()
I seguenti sono i metodi usati di frequente della classe gtk.Notebook:
append_page(child, label)- Questo aggiunge una pagina al taccuino contenente un widget specificato da tab_label come etichetta sulla scheda. Se tab_label può essere Nessuno per utilizzare un'etichetta predefinita.
insert_page(child, label, position) - Questo inserisce una pagina nel blocco note nella posizione specificata da posizione.
remove_page(index) - Questo rimuove una pagina all'indice specificato.
get_current_page() - Questo restituisce l'indice della pagina della pagina corrente.
set_current_page(index) - Questo passa al numero di pagina specificato dall'indice.
set_show_tabs()- Se false, le schede non saranno visibili. Questo è True per impostazione predefinita.
set_tab_pos(pos)- Questo imposta il bordo in corrispondenza del quale vengono disegnate le schede per cambiare pagina nel blocco note. Le costanti predefinite sono:
gtk.POS_LEFT
gtk.POS_RIGHT
gtk.POS_TOP
gtk.POS_BOTTOM
set_tab_label_text(child, text) - Questo crea una nuova etichetta con il testo specificato e la imposta come etichetta di tabulazione per la pagina che contiene il bambino.
Il widget gtk.Notebook emette i seguenti segnali:
cambia-pagina-corrente | Viene emesso quando viene inviata la richiesta di pagina successiva o pagina precedente |
focus-tab | Viene emesso quando lo stato attivo viene modificato dalla tabulazione. |
pagina aggiunta | Viene emesso quando una pagina viene aggiunta al taccuino. |
pagina rimossa | Viene emesso dopo che una pagina viene rimossa dal blocco note. |
seleziona-pagina | Viene emesso quando viene selezionata una nuova pagina figlio. |
switch-page | Viene emesso quando viene modificata la pagina del taccuino. |
Esempio
Nell'esempio seguente, un gtk.Notebook con tre pagine viene posizionato in una gtk.Window di primo livello. La prima pagina contiene un VBox in cui sono imballati un'etichetta e un campo di immissione. La seconda pagina denominata "qualifiche" ha un HButtonBox in cui vengono aggiunti tre widget RadioButton che si escludono a vicenda. La terza pagina ha un oggetto TextView. Le etichette delle pagine vengono visualizzate in alto.
Rispetta il codice -
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()
Al momento dell'esecuzione, il codice sopra mostra un blocco note con tre pagine: