5

Glade 3を使用して、作業中のPyGTKアプリのGtkBuilderファイルを作成しています。帯域幅を管理するためのものなので、追跡するネットワークインターフェイスを選択するためのgtk.ComboBoxがあります。

実行時に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)

ただし、ComboBoxは空のままです。私はRTFMを試しましたが、どちらかといえばもっと混乱してしまいました。

乾杯。

4

2 に答える 2

6

ねえ、私は実際に自分の質問に答えることができます!

実際にレンダリングするには、そこに 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から取得しました。

Joe McBride のおかげで修正された例

于 2009-07-24T10:31:33.490 に答える
6

または、 を使用して自分でコンボ ボックスを作成して挿入することもできますgtk.combo_box_new_text()。次に、gtk ショートカットを使用して、テキストを追加挿入先頭に追加、および削除できるようになります。

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)
于 2009-07-24T12:03:09.123 に答える