जो मैं करने की कोशिश कर रहा हूं वह तारों की सूची गतिशील रूप से बदलता है (फिल्टर के माध्यम से)। मेरे मामले में यह gtk.TreeStore
में संग्रहीत पथ वाले फ़ाइलों की सूची है।PyGtk फ़िल्टर का उपयोग करके TreeView डेटा को कैसे बदलें?
की उम्मीद प्रभाव का उदाहरण (। जैसे उदात्त पाठ 2 फ़ाइल खोज Ctrl + पी):
डाटा:
फ़ाइलें (treeview) की सूची:
- '/ घर/उपयोगकर्ता/
- '.bashrc',
- 'test.txt',
- ...
कार्रवाई: फिल्टर क्षेत्र में (एंट्री विजेट) उपयोगकर्ता टाइपिंग शुरू होता है। पहले चरित्र उदाहरण के बाद। 'टी' की सूची में इस तरह अद्यतन किया जाना चाहिए:
परिणाम:
फ़ाइलों की सूची (treeview):
- 'test.txt',
- ... सभी स्ट्रिंग्स 'टी युक्त '(मिलान समारोह अब महत्वपूर्ण नहीं है)
क्या मैं पहले से ही है:
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()
मुझे पता है कि TreeView में एक विधि set_search_equal_func
है जहां मैं डिफ़ॉल्ट मिलान फ़ंक्शन को अपने आप में बदल सकता हूं। समस्या यह है कि मैं फिल्टर फॉर्म फ़ील्ड में टाइपिंग के दौरान सूची कैसे बदल सकता हूं?
+1, यह वास्तव में उपयोगी है। dziękuję! – Sardathrion