Những gì tôi đang cố gắng làm là thay đổi động (thông qua bộ lọc) danh sách các chuỗi. Trong trường hợp của tôi, đó là danh sách các tệp có đường dẫn được lưu trữ trong gtk.TreeStore
.PyGtk Làm cách nào để thay đổi dữ liệu TreeView bằng bộ lọc?
Ví dụ về hiệu quả dự kiến (. Ví dụ như Sublime file văn bản 2 tìm kiếm Ctrl + P):
dữ liệu:
Danh sách các tập tin (treeview):
- '/ home/user/'
- ' .bashrc ',
- 'test.txt',
- ...
Hành động: Trong lĩnh vực lọc (Entry widget) dùng bắt đầu gõ. Sau ký tự đầu tiên, ví dụ. danh sách 't' cần được cập nhật như thế này:
Kết quả:
Danh sách các tập tin (treeview):
- 'test.txt',
- ... tất cả các chuỗi có chứa 't (phù hợp với chức năng là không quan trọng bây giờ)
Những gì tôi đã có:
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()
Tôi biết rằng TreeView có phương thức set_search_equal_func
nơi tôi có thể thay đổi chức năng đối sánh mặc định thành của riêng mình. Vấn đề là làm thế nào tôi có thể thay đổi danh sách trong khi gõ vào trường biểu mẫu bộ lọc?
+1, đây là thực sự hữu ích. dziękuję! – Sardathrion