【问题标题】:Kivy: How to keep path updated from filechooserKivy:如何从文件选择器保持路径更新
【发布时间】:2020-06-17 12:52:15
【问题描述】:

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

如何实现更新后的文本输入?

到目前为止,我有:

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 的新手,我不知道为什么在 the example "and" & "or" 中 - 它似乎不是逻辑表达式

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

关于选择的唯一内容是

selection:包含当前选择的文件列表。 selection 是一个只读 ListProperty,默认为 []。

【问题讨论】:

    标签: python kivy filechooser


    【解决方案1】:

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

    .kv 丢失 dirselect: True 这会将单击的文件夹放置到选择列表中。要进入该文件夹,您现在必须单击两次。

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

    新方法是:

    .kv

    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.selection 列表,则使用 self.selection[0] 但如果没有列表,则使用空字符串。由于选择目录会产生有效的选择,我们不需要

    之后的其他选项

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

    【讨论】:

    • 示例中的and/or 表达式利用了python评估逻辑表达式的方式。来自documentation:“表达式 x 和 y 首先计算 x;如果 x 为假,则返回其值;否则,计算 y 并返回结果值。”。并且在同一部分:“请注意,and 或 or 都不会限制它们返回 False 和 True 的值和类型,而是返回最后评估的参数。”
    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多