2009-07-24 3 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) 

그러나 ComboBox는 비어 있습니다. RTFM을 시도했지만, 혼란 스러웠습니다.

건배.

답변

6

아니면 그냥 만들고 콤보 자신이 gtk.combo_box_new_text()를 사용하여 상자에 삽입 할 수 있습니다. 그러면 append, insert, prependremove 텍스트에 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) 
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