2009-07-24 10 views
5

Sto usando Glade 3 per creare un file GtkBuilder per un'applicazione PyGTK su cui sto lavorando. È per la gestione della larghezza di banda, quindi ho un gtk.ComboBox per selezionare l'interfaccia di rete da tracciare.Come aggiungere elementi a un gtk.ComboBox creato tramite glade in fase di runtime?

Come si aggiungono le stringhe al ComboBox in fase di runtime? Questo è quello che ho finora:

self.tracked_interface = builder.get_object("tracked_interface") 

self.iface_list_store = gtk.ListStore(gobject.TYPE_STRING) 
self.iface_list_store.append(["hello, "]) 
self.iface_list_store.append(["world."]) 
self.tracked_interface.set_model(self.iface_list_store) 
self.tracked_interface.set_active(0) 

Ma il ComboBox rimane vuoto. Ho provato RTFM'ing, ma sono appena uscito più confuso, semmai.

Cheers.

risposta

6

Oppure si può semplicemente creare e inserire la casella combinata da soli, usando gtk.combo_box_new_text(). Quindi sarai in grado di utilizzare le scorciatoie gtk su append, insert, prepend e remove.

combo = gtk.combo_box_new_text() 
combo.append_text('hello') 
combo.append_text('world') 
combo.set_active(0) 

box = builder.get_object('some-box') 
box.pack_start(combo, False, False) 
5

Ehi, in realtà posso rispondere alla mia stessa domanda!

dovete aggiungere gtk.CellRendererText in là per poter rendere realtà:

self.iface_list_store = gtk.ListStore(gobject.TYPE_STRING) 
self.iface_list_store.append(["hello, "]) 
self.iface_list_store.append(["world."]) 
self.tracked_interface.set_model(self.iface_list_store) 
self.tracked_interface.set_active(0) 
# And here's the new stuff: 
cell = gtk.CellRendererText() 
self.tracked_interface.pack_start(cell, True) 
self.tracked_interface.add_attribute(cell, "text", 0) 

Estratto da, naturalmente, il PyGTK FAQ.

Corretti esempio grazie a Joe McBride

2

Solo nel caso qualcun altro usa questa, l'ultima riga di codice dovrebbe essere:

self.tracked_interface.add_attribute(cell, "text", 0) 

invece di:

self.tracked_interface.(cell, "text", 0) 
+0

Io modificare la mia risposta. Grazie! – Bernard

Problemi correlati