Киви: Как обновить путь от filechooser - PullRequest
1 голос
/ 17 июня 2020

У меня есть средство выбора файлов, и я хочу обновлять ввод текста пути к файлу для справки. Когда пользователь выбирает файл и нажимает кнопку, весь путь к файлу берется методом.

Как мне получить ie обновленный ввод текста?

Пока что у меня есть:

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 и Киви, и я понятия не имею, почему, черт возьми, пример"и" & "или "- это не похоже на логическое выражение

    on_selection: text_input.text = self.selection и self.selection [0] или ''

единственное, что говорится о выборе, это

selection: содержит список файлов, которые в настоящее время выбраны. d. выделение доступно только для чтения ListProperty и по умолчанию имеет значение [].

1 Ответ

0 голосов
/ 17 июня 2020

Что ж, кажется, я должен ответить на все свои вопросы по 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], но если списка нет, используйте пустую строку. Поскольку при выборе каталога производится правильный выбор, нам не нужен другой вариант после или

Не стесняйтесь исправлять мои предположения - я буду рад узнать больше.

...