Kivy FileChooserListView - 修改文件列表的显示?

时间:2015-12-15 20:26:46

标签: python-3.x kivy

我想知道是否有人知道如何向Kivy的FileChooserListView添加数字(仅供参考),以便文件列表显示如下:

#  Name       Size
1. File 1       2k
2. File 2       2k
3. File 3       2k
...

2 个答案:

答案 0 :(得分:0)

好的,这不是一个完美的答案,但这就是我试图做的事情:

首先要编辑kivy的默认filechooser.py文件。找到这个部分:

    ctx = {'name': basename(fn),
           'get_nice_size': get_nice_size,
           'path': fn,
           'controller': wself,
           'isdir': self.file_system.is_dir(fn),
           'parent': parent,
           'sep': sep}

并将其更改为:

    ctx = {'name': basename(fn),
           'get_nice_size': get_nice_size,
           'path': fn,
           'controller': wself,
           'isdir': self.file_system.is_dir(fn),
           'parent': parent,
           'sep': sep,
           'index': index}

接下来,找到kivy的style.kv文件(你可能会创建一个自定义类来执行此操作,但我很懒惰!)。请查看此部分[FileListEntry@FloatLayout+TreeViewNode]:

然后我接受了这一部分:

Label:
    id: filename
    text_size: self.width, None
    halign: 'left'
    shorten: True
    text: ctx.name

并将其更改为:

Label:
    id: filename
    text_size: self.width, None
    halign: 'left'
    shorten: True
    text: "{}. {}".format(ctx.index, ctx.name)

根据我上面的评论,如果您尝试导航文件夹,似乎会抛出错误。

可能是其中一位kivy专家知道更好的方法。

答案 1 :(得分:0)

我知道这已经很晚了,但是要完成elParaguayo的答案,您还必须替换行

pardir = self._create_entry_widget(dict(
            name=back, size='', path=new_path, controller=ref(self),
            isdir=True, parent=None, sep=sep,
            get_nice_size=lambda: ''))

使用

       pardir = self._create_entry_widget(dict(
            name=back, size='', path=new_path, controller=ref(self),
            isdir=True, parent=None, sep=sep,
            get_nice_size=lambda: '', index= 0))

(请注意,这些行有2次出现)。这是在浏览时引发异常的原因:父目录../的创建未与其他文件相同。

此外,我建议您创建filechooser.pystyle.kv的本地副本,并将其加载到您的应用中,而不要修改kivy模块的源代码。