2012-06-17 30 views
3

我正在看這篇文章:https://stackoverflow.com/a/2262200和我有一個非常類似的設置,我正在編碼的小東西。我的問題是,一旦entrycompletion完成,並且輸入框具有url,那麼我如何從完成中將該url導入變量? entry.get_text()似乎不起作用,而我嘗試的其他東西似乎只能給我一個對象或地址。如果您不喜歡點擊,請點擊以上鍊接。如何從entrycompletion獲得條目

# simplified example from the tutorial 
import gtk 

urls = [ 
    'http://www.google.com', 
    'http://www.google.com/android', 
    'http://www.greatstuff.com', 
    'http://www.facebook.com', 
    ] 
liststore = gtk.ListStore(str) 
for s in urls: 
    liststore.append([s]) 

completion = gtk.EntryCompletion() 
completion.set_model(liststore) 
completion.set_text_column(0) 

entry = gtk.Entry() 
entry.set_completion(completion) 

# boilerplate 
window = gtk.Window() 
window.add(entry) 

window.connect('destroy', lambda w: gtk.main_quit()) 
window.show_all() 
gtk.main() 

回答

4

您的代碼的以下變體適用於我。

# simplified example from the tutorial 
import gtk 

def on_match_selected(completion, treemodel, treeiter): 
    print treemodel[treeiter][completion.get_text_column()] 

urls = [ 
    'http://www.google.com', 
    'http://www.google.com/android', 
    'http://www.greatstuff.com', 
    'http://www.facebook.com', 
    ] 
liststore = gtk.ListStore(str) 
for s in urls: 
    liststore.append([s]) 

completion = gtk.EntryCompletion() 
completion.set_model(liststore) 
completion.set_text_column(0) 

completion.connect('match-selected', on_match_selected) 

entry = gtk.Entry() 
entry.set_completion(completion) 

# boilerplate 
window = gtk.Window() 
window.add(entry) 

window.connect('destroy', lambda w: gtk.main_quit()) 
window.show_all() 
gtk.main() 
+0

非常感謝。幾天前,我會把頭撞在牆上。完美的作品。 –