我有文件选择器,我想保持文件路径文本输入更新以供参考。当用户选择文件并单击按钮时,整个文件路径由方法采用。
如何获得更新的文本输入?
到目前为止,我有:
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],如果没有列表,请使用空字符串。由于选择目录会产生有效的选择,因此在或之后不需要其他选项
随意纠正我的假设 - 我很乐意了解更多信息。