¿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 queopen_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 deopen_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ónselect_path
es una cadena vacía cuando el usuario no selecciona ningún archivo. Esto se debe a que la funciónopen_file
devuelveNone
si el usuario no selecciona ningún archivo.Para solucionar este problema, debes verificar si el argumento
path
esNone
antes de usarlo en la funciónselect_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