Quello che sto cercando di fare è modificare dinamicamente (tramite filtro) un elenco di stringhe. Nel mio caso si tratta di un elenco di file con percorsi memorizzati in gtk.TreeStore
.PyGtk Come modificare i dati TreeView usando il filtro?
Esempio di effetto previsto (es. Sublime Text file 2 ricerca Ctrl + P):
dati:
Elenco dei file (TreeView):
- '/ home/user/'
- ' .bashrc ',
- 'test.txt',
- ...
Azione: Nel campo del filtro (widget di Entry) utente inizia a digitare. Dopo il primo carattere es. lista 't' dovrebbe essere aggiornato in questo modo:
Risultato:
Elenco dei file (ad albero):
- 'test.txt',
- ... tutte le stringhe contenenti 't '(funzione di corrispondenza non è importante ora)
quello che ho già:
self.search_entry = gtk.Entry()
self.tree_store = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)
for node, files in self.files_list:
parent = self.tree_store.append(None, [node, True])
for f in files:
self.tree_store.append(parent, [f, True])
tree_filter = self.tree_store.filter_new()
self.treeview = gtk.TreeView(tree_filter)
self.renderer0 = gtk.CellRendererText()
self.treeview.insert_column_with_attributes(-1, "Filename", self.renderer0, text=0)
self.treeview.set_search_column(0)
self.treeview.set_search_entry(self.search_entry)
self.treeview.expand_all()
So che TreeView ha un metodo set_search_equal_func
in cui posso modificare la funzione di corrispondenza predefinita per il mio. Il problema è come posso cambiare l'elenco durante la digitazione nel campo del modulo filtro?
+1, questo è davvero utile. Dziękuję! – Sardathrion