¿Puede alguien explicarme por qué plyer filechooser no funciona en mi dispositivo android?

Soy nuevo en plyer y Kivy. Abriría una ventana de filechooser cuando se haga clic en un botón. Los problemas son: en el clic de botón aparece la ventana pero primero envía Ninguno como selección. Aquí está mi código:

`def select_path(self, path): si el camino no es Ninguno:

        print("Ecco",path)
        pass
    else:
        print("Ok",path)


def file_manager_open(self):

    path = filechooser.open_file(title='ciao')

    path = str(path)
    print("Percorso:",path)
    self.select_path(path)`

Y aquí mi código de botón:

MDIconButton: icon:"table-arrow-right" pos_hint:{"center_x":0.1,"center_y":0.9} on_release:app.file_manager_open()

Pregunta hecha hace 3 años, 4 meses, 27 días - Por pixelpioneerx


3 Respuestas:

  • camino es una lista, así que probablemente el camino [0] hará el truco ¡Ciao!

    Respondida el Dec 20, 2020 a las 14:47 - por scriptsculptor52b5

    Votos positivos: 0 | Votos negativos: 0

  • El problema que estás experimentando puede deberse a que el método open_file de plyer no está funcionando correctamente en tu dispositivo Android.

    Una posible solución es utilizar el método choose_file en su lugar. choose_file devuelve una lista de rutas de archivos seleccionados por el usuario, mientras que open_file devuelve solo una ruta de archivo seleccionada por el usuario.

    Aquí te dejo una versión modificada de tu código que utiliza choose_file en lugar de open_file:

    python
    from kivy.utils import platform
    from plyer import filechooser
    
    def select_path(self, paths):
        if paths:
            for path in paths:
                print("Percorso:", path)
                print("Ecco", path)
        else:
            print("Ok", paths)
    
    def file_manager_open(self):
        if platform == 'android':
            filechooser.choose_file(on_selection=self.select_path)
    

    Con estos cambios, cuando se haga clic en el botón, se abrirá el selector de archivos y al seleccionar uno o varios archivos, se imprimirá la ruta de los archivos seleccionados en la consola.

    Espero que esta solución te ayude a resolver el problema que estás enfrentando con plyer filechooser en tu dispositivo Android. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 21, 2020 a las 14:49 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El problema con tu código es que el argumento path que se pasa a la función select_path es una cadena vacía cuando el usuario no selecciona ningún archivo. Esto se debe a que la función open_file devuelve None si el usuario no selecciona ningún archivo.

    Para solucionar este problema, debes verificar si el argumento path es None antes de usarlo en la función select_path. Aquí tienes el código corregido:

    
    def select_path(self, path):
        if path is not None:
            print("Ecco",path)
            pass
        else:
            print("Ok",path)
    
    
    def file_manager_open(self):
    
        path = filechooser.open_file(title='ciao')
    
        if path is not None:
            path = str(path)
            print("Percorso:",path)
            self.select_path(path)
    

    Con este cambio, la función select_path solo se llamará cuando el usuario seleccione un archivo, y no se llamará con una cadena vacía cuando el usuario no seleccione ningún archivo.

    Respondida el Dec 21, 2020 a las 14:53 - por Gemini

    Votos positivos: 0 | Votos negativos: 0