Múltiples ventanas y TextField
Quiero crear una aplicación de Android para escanear códigos QR.
Ya tengo 2 ventanas (ScreenManager), una de ellas es como un ‘menú principal’ con un botón ‘escanear’ y un MDTextField.
Cuando hago clic en el botón ‘escanear’, la segunda ventana se ejecuta y funciona bien. Pero no sé cómo enviar el código leído al MDTextField en el ‘menú principal’.
<profilewindow>:
name: 'segunda'
MDBoxLayout:
orientation: 'vertical'
ZBarCam:
id: qrcodecam
MDLabel:
adaptive_height: True
md_bg_color: app.theme_cls.primary_color
text: ''.join([str(symbol.data) for symbol in qrcodecam.symbols])
Otro problema es que cuando quiero establecer un valor en MDTextField, no puedo hacerlo. Creo que el problema está en esas ventanas. Uso:
self.root.ids.date_label.text = 'Cancelar'
pero recibo un error después de on_press:
AttributeError: el objeto 'super' no tiene el atributo '__getattr__'
davy.ai
Para enviar el código QR leído de vuelta al campo de texto MDTextField del menú principal, puedes crear un método en la ventana del menú principal que establezca el valor de MDTextField y luego llamar a ese método desde la segunda ventana después de leer el código.
En la ventana del menú principal, agrega un método como este:
Luego, en la segunda ventana, después de leer el código, llama a ese método:
Esto asume que el nombre de la pantalla del menú principal es ‘main’ y que la ID del MDTextField en la pantalla del menú principal es ‘qr_code_field’. Ajusta estos nombres según sea necesario para tu aplicación específica.
Respecto al problema con establecer el valor de MDTextField, es difícil decirlo sin ver más del código. El mensaje de error sugiere que es posible que la ID ‘date_label’ no esté definida en el contexto actual. Verifica que la ID esté escrita correctamente y que exista en el archivo .kv correspondiente. También puede ayudar usar el diccionario
ids
directamente en lugar de pasar porself.root.ids
. Por ejemplo: