Kivy:如何保持路径从文件选择器更新



我有文件选择器,我想保持文件路径文本输入更新以供参考。当用户选择文件并单击按钮时,整个文件路径由方法采用。

如何获得更新的文本输入?

到目前为止,我有:

TextInput:
id: file_path        
FileChooserIconView:
id: filechooser
on_selection: file_path.text = self.selection and self.selection[0] or self.path
path: '.'
Button:
id: save
text: 'Save'

然后在.py

self.ids.save.bind(on_press=lambda x: self.save_file(self.ids.file_path.text))
  • 问题 1.- 启动时文本输入为空 - 它应该用当前查看的文件夹路径填充
  • 问题2.-如果我在启动后输入文件夹,则路径不会更新并保持空白。
  • 问题3.-单击文件(正确更新文件路径(然后单击文件夹后,文本输入不会更新。
  • 问题4.-我是Python和Kivy的新手,我不知道为什么在示例中"and"和"or"中 - 这似乎不是逻辑表达

    on_selection: text_input.text = self.select and self.selection[0] 或 ''

关于选择的唯一说法是

选择:包含当前选定的文件的列表。 选择是只读列表属性,默认为 []。

好吧,看来我必须回答我在StackOverflow上的所有问题。希望将来对某人有所帮助。

.kv 缺少目录选择:真,这会将单击的文件夹放入选择列表。要进入该文件夹,您现在必须单击两次。

初始状态使用str(Path.home(((

新的方法是:

。千伏

TextInput:
id: file_path
FileChooserIconView:
id: filechooser
on_selection: file_path.text = self.selection and self.selection[0]
dirselect: True

。.py

from pathlib import Path
class foo(Screen):
def __init__(self):
self.ids.file_path.text = str(Path.home())
self.ids.filechooser.path = str(Path.home())
self.ids.filechooser.filters = [lambda folder, filename: not filename.endswith('.sys')]

这解决了前 3 个问题。关于数字 4 我不确定 - 我猜这意味着 如果有任何 self.select 列表,请使用 self.selection[0],如果没有列表,请使用空字符串。由于选择目录会产生有效的选择,因此在之后不需要其他选项

随意纠正我的假设 - 我很乐意了解更多信息。

最新更新