Python 如何在运行时将项目添加到通过glade创建的gtk.ComboBox中?

Python 如何在运行时将项目添加到通过glade创建的gtk.ComboBox中?,python,gtk,pygtk,Python,Gtk,Pygtk,我正在使用Glade3为我正在开发的PyGTK应用程序创建一个GtkBuilder文件。它是用来管理带宽的,所以我有一个gtk.ComboBox来选择要跟踪的网络接口 如何在运行时向组合框添加字符串?这就是我到目前为止所做的: self.tracked_interface = builder.get_object("tracked_interface") self.iface_list_store = gtk.ListStore(gobject.TYPE_STRING) self.iface_

我正在使用Glade3为我正在开发的PyGTK应用程序创建一个GtkBuilder文件。它是用来管理带宽的,所以我有一个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,但如果有什么不对劲的话,我就更糊涂了


干杯。

嘿,我真的可以回答我自己的问题了

您必须将gtk.cellRenderText添加到其中,它才能实际渲染:

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)
当然,是从


多亏了Joe McBride,您的示例得以更正,或者您可以自己使用创建并插入组合框。然后,您将能够使用gtk快捷方式访问、和文本


可能需要指出的是,
add\u attribute
的最后一个参数是要显示的列表存储中的列。在您的情况下,
0
是正确的选择,但我需要
1
,因为我想显示
Gtk.ListStore(int,str)
中的字符串。
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)