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 默认位置的主要内容,如果未能解决你的问题,请参考以下文章