我想知道是否有人知道如何向Kivy的FileChooserListView添加数字(仅供参考),以便文件列表显示如下:
# Name Size
1. File 1 2k
2. File 2 2k
3. File 3 2k
...
答案 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.py
和style.kv
的本地副本,并将其加载到您的应用中,而不要修改kivy模块的源代码。