Home > Back-end >  Kivy FileChooser: how do I list Files only and not Directories?
Kivy FileChooser: how do I list Files only and not Directories?

Time:01-16

I created a FileChooser (below) in Kivy that displays directories and not files. But, how do I create a FileChooser in Kivy that will display only files and not directories.

My KV code:

FileChooserListView:
    id: MTDcontainer
    size_hint_y: .87
    size_hint_x: .95
    halign: "left"
    pos_hint: {"center_x": .5, "center_y": .60}
    on_selection: app.MTDirWasChosen_callback(args)
    path: "."
    filters: [lambda folder, filename: not filename.endswith('')]   #display dirs only
    dirselect: True
...

CodePudding user response:

You can do that using some attributes of the FileChooser along with a custom filter. First, change your path attribute to rootpath instead. That eliminates the .. entry that normally is displayed. Then you can add a method that filters out directories, but you must also add the filter_dirs: True in order for the filter to be applied to folders. Here is a modified version of your kv that does that:

FileChooserListView:
    id: MTDcontainer
    size_hint_y: .87
    size_hint_x: .95
    halign: "left"
    pos_hint: {"center_x": .5, "center_y": .60}
    on_selection: app.MTDirWasChosen_callback(args)
    rootpath: "."
    filters: [app.file_filter]
    filter_dirs: True

And the file_filter() method in the App is just:

def file_filter(self, folder, file):
    return not os.path.isdir(file)
  •  Tags:  
  • Related