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)
我在 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)