Kivy - 更改 FileChooser 默认位置

Posted

技术标签:

【中文标题】Kivy - 更改 FileChooser 默认位置【英文标题】:Kivy - change FileChooser defaul location 【发布时间】:2017-07-19 05:30:03 【问题描述】:

现在文件选择器将根目录作为默认位置打开,但我希望它跳过它并默认打开内部存储(sdcard),用户可以从那里往下走。

到目前为止,这是我的代码片段 班级:

class LoadDialog(FloatLayout):
    load = ObjectProperty(None)
    cancel = ObjectProperty(None)

kv文件中的定义

<LoadDialog>:
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserListView:
            id: filechooser

        BoxLayout:
            size_hint_y: None
            height: 30
            Button:
                text: "Cancel"
                on_release: root.cancel()

            Button:
                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)

实际加载代码:

def show_load(self):
        content = LoadDialog(load=self.load, cancel=self.dismiss_popup)
        self._popup = Popup(title="Load file", content=content,
                            size_hint=(0.9, 0.9))
        self._popup.open()

def load(self, path, filename):
        wimg = os.path.join(path, filename[0])
        self.image_source = wimg
        self.dismiss_popup()

所以基本上用户不必上 1 个目录即可访问 sdcard,应该已经存在。最坏的情况是过滤那里的所有其他文件夹,除了包含单词 sdcard 的文件夹。

【问题讨论】:

现在sd卡的路径不包含sdcard这个词。而且sd卡不是内部存储。 从我所见,至少在 android 4 中,内部存储是 sdcard,它是一个符号链接。我需要的位置基本上是DCIM文件夹的父目录 那将是getExternalStorageDirectory()。 【参考方案1】:

设置路径属性。

FileChooserListView:
    id: filechooser
    path: "/your/path"

要使用 python 在系统上查找目录,您可以执行以下操作:

import os

for root, dirs, files in os.walk("/"):
    for name in dirs:
        if name == "DCIM":
            print(root, name)

请注意,它可能会在您的 SD 卡和内部存储上找到两个或多个名为 DCIM 的目录。

【讨论】:

一般情况下,我知道在我的 HTC 手机上,DCIM 文件夹位于名为 sdcard 的目录中。有没有办法总是找到 DCIM 文件夹?或者至少是内部存储? @Nick 你是说 sdcard 是内部存储上的文件夹吗? 是的,sdcard 是内部存储,我也有 sdcard2,它是我可以弄清楚的外部存储 我们如何自动将其设置为当前工作目录? @PyWalker2797 path="."

以上是关于Kivy - 更改 FileChooser 默认位置的主要内容,如果未能解决你的问题,请参考以下文章

Kivy 弹出 Filechooser 传递变量(选择)

Kivy popup Filechooser传递变量(选择)

Kivy 中的 Askopenfilename 替代方案

Kivy:单击按钮时如何更新标签

使用 Kivy 访问 iPhone 照片库

Kivy:更改 ActionBar 的背景颜色