2009-07-24 21 views
5

我正在使用Glade 3爲我正在開發的PyGTK應用程序創建一個GtkBuilder文件。它用於管理帶寬,所以我有一個gtk.ComboBox用於選擇要跟蹤的網絡接口。如何將項目添加到在運行時通過glade創建的gtk.ComboBox?

如何在運行時向組合框添加字符串?這是我到目前爲止:

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) 

但組合框仍然是空的。我嘗試了RTFM'ing,但是如果有的話,就會變得更加困惑。

乾杯。

回答

6

或者您也可以創建並插入自己使用gtk.combo_box_new_text()組合框。然後你就可以使用gtk快捷鍵appendinsertprependremove文字。

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

嘿,我其實回答我自己的問題!

你必須gtk.CellRendererText加入到有它實際呈現:

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) 

從,當然PyGTK FAQ檢索。

更正例如由於喬·麥克布萊德

2

萬一其他人使用這個,代碼的最後一行應該是:而不是

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

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

我將修改我的答案。謝謝! – Bernard 2011-05-18 05:43:06

相關問題