2012-02-08 19 views
1

IDを知らずにコンボボックスのテキストを設定するにはどうすればよいですか?私は名前のリスト( 'Jack'、 'Emily'、 'Paul'、...)が入ったコンボボックスを持っています。デフォルトでは、コンボは-1に設定されていますが、「Paul」に設定します。ここでコンボボックス(gtk)のエントリを設定

はタプル(ID、fabName)とのコンボを宣言し、移入するために私のコードです:今

self.cmbFabricant = builder.get_object("cmbFabricant") 
    self.cmbFabricant.set_model(lstStore) 
    self.cmbFabricant.set_entry_text_column(1) 

、私は「ポール」という項目にコンボボックスを設定したいと思います。

self.cmbFabricant.set_active_id('Paul') 

私は間違っていました。

答えて

1

私は間違っているかもしれませんが、set_active_idはGTK + 3で新しく、PyGTKはGTK + 2であると思います。GTK + 3を使いたい場合はPyGObjectに切り替える必要があります。

しかし、あなたはPyGTKの上で立ち往生している場合、あなたは簡単にこのような何か行うことによって、それを回避することができます。

import gtk 

def set_active_name(combobox, col, name): 
    liststore = combobox.get_model() 
    for i in xrange(len(liststore)): 
     row = liststore[i] 
     if row[col] == name: 
      combobox.set_active(i) 

window = gtk.Window() 
window.connect("destroy", gtk.main_quit) 

liststore = gtk.ListStore(int, str) 
liststore.append([0, 'Jack']) 
liststore.append([1, 'Emily']) 
liststore.append([2, 'Paul']) 

combobox = gtk.ComboBox() 
cell = gtk.CellRendererText() 
combobox.pack_start(cell) 
combobox.add_attribute(cell, 'text', 1) 
combobox.set_model(liststore) 

set_active_name(combobox, 1, 'Paul') 

window.add(combobox) 
window.show_all() 

gtk.main() 

を私はよりエレガントな/効率的な方法があるかどうかわからないんだけど、この作品少なくとも。

+0

いいえ、以前のメッセージを編集しました。私のプロジェクトはGTK + 3に基づいています。答えてくれてありがとう。私は今試してみる。 –

+0

はるかにエレガントな方法が存在するかどうかわかりませんが、これは私のために働いていました。ありがとう。 (範囲を意味するのではなく、xrangeではない?) –

関連する問題