刷新/重新加载 FileChooser

2022-01-15 00:00:00 python kivy filechooser

问题描述

目前我经常使用 FileChooser 并且我没有在 文档.小部件很棒,但是如果有人想刷新显示的文件,则需要从当前目录移动以刷新文件.

Currently I'm working with FileChooser a lot and I didn't find any mention of refreshing the widget in the docs. The widget is awesome, but if someone wants to refresh shown files, a movement from current directory is necessary to refresh files.

问题是当你有一个 single 目录作为 rootpath 并且里面只有文件时,因此不可能进行这样的移动.

The problem is when you have a single directory as a rootpath and inside are only files, therefore no such movement is possible.

我的问题是如何刷新小部件,如果我想避免任何浪费的删除/添加 FileChooser 并尽可能缩短 FileChooser 非常嵌套在 kv 文件中.

My question was how to refresh the widget if I want to avoid any wasteful removing/adding of FileChooser and do it as short as possible for a FileChooser that is very nested in a kv file.


解决方案

我搜索了 filechooser.py 找到了 code 在目录之间的每次移动时触发.考虑到 FileChooserIconViewFileChooserListView 继承自 FileChooserController 的事实,对函数的访问很简单,不需要额外的导入.

After I searched filechooser.py I found the code which is triggered on each movement between directories. Giving the fact the FileChooserIconView and FileChooserListView inherit from FileChooserController, the access to the function is simple and no additional imports are required.


假设我们有 filechooser = FileChooserIconView():

filechooser._update_files() 运行良好,当 FileChooser 嵌套在某处时,使用 id

filechooser._update_files() works well and when is FileChooser nested somewhere, it's easy to access it with id

如需更多调整,Clock.schedule_interval(filechooser._update_files, t) 可能会对您在合理时间内更新目录内容有所帮助.

For more tweaks Clock.schedule_interval(filechooser._update_files, t) may be helpful where you can update your directory content within a reasonable time.

(我在这里添加它,因为我没有发现它,但是它可能对某人有用.)

(I add it here, because I found no mention of it, however it may be useful to someone.)

相关文章