Kivy FileChooser:如何只列出文件而不列出目录?

Kivy FileChooser: how do I list Files only and not Directories?

我在 Kivy 中创建了一个 FileChooser(如下),它显示目录而不是文件。但是,我如何在 Kivy 中创建一个 FileChooser 来显示仅文件而不是目录

我的KV代码:

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
...

您可以使用 FileChooser 的一些属性以及自定义过滤器来做到这一点。首先,将 path 属性更改为 rootpath。这消除了通常显示的 .. 条目。然后您可以添加一个过滤目录的方法,但您还必须添加 filter_dirs: True 以便将过滤器应用于文件夹。这是您的 kv 的修改版本:

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

App 中的 file_filter() 方法只是:

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