es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tienes múltiples entradas en PyWebIO.

Quiero construir una aplicación web con PyWebIO para preguntar las configuraciones de un dispositivo y encontrar el mejor ajuste para sus datos. En esta aplicación debemos elegir qué algoritmos queremos utilizar para encontrar el mejor ajuste. Quiero poder introducir configuraciones y tener un botón para agregar tantos “tipos de ajuste” nuevos como desee en la misma página.

Para tener múltiples entradas utilizo input_groups(), pero no sé cómo agregar nuevos campos de entrada dinámicos en él. Intenté usar la demostración oficial de la “lista de tareas pendientes”, pero sólo tiene una entrada. Quiero tener todas las entradas y una entrada dinámica en la misma página.

Espero estar claro. En la foto 1 quiero tener algo como la parte roja en la que puedo agregar tantos tipos de ajuste como quiera sin ir a una nueva página. Cuando pulso el botón Agregar, debería aparecer una entrada de deslizamiento en la que puedo elegir entre las opciones.

Por favor, dime cómo debería definir la nueva entrada sin tener que volver a escribir toda la página.

Mi código es:

data = input_group(“información de entrada”,[
select(“por favor seleccione DeviceEUI:”, options=deviceeuis, name=’DeviceEUI’,
onchange=lambda c: euichange(c)),
select(“por favor seleccione el nombre del dispositivo:”, options=devicenames, name=’device_name’,
onchange=lambda c: namechange(c)),
select(‘base_gasID’, options= [‘Seleccionar gas base’],name=’base_gasID’, type=TEXT),
input(‘file_name’, name=’file_name’, type=TEXT),
input(‘date_start’, name=’date_start’, type=DATE),
input(‘time_start’, name=’time_start’, type=TIME),
input(‘date_end’, name=’date_end’, type=DATE),
input(‘time_end’, name=’time_end’, type=TIME),

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar nuevos campos de entrada dinámicos a un grupo de entrada en PyWebIO, puedes usar la función put_row() dentro de un bucle para agregar nuevas filas de entrada al grupo de entrada existente. Aquí tienes un ejemplo de cómo puedes hacerlo:

    from pywebio.input import *
    from pywebio.output import *
    
    data = input_group("Información de entrada", [
        select("Por favor seleccione DeviceEUI:", options=deviceeuis, name='DeviceEUI',
               onchange=lambda c: euichange(c)),
        select("Por favor seleccione el nombre del dispositivo:", options=devicenames, name='device_name',
               onchange=lambda c: namechange(c)),
        select('Base gasID',  options=['Seleccione el gas base'], name='base_gasID', type=TEXT),
        input('nombre_archivo', name='nombre_archivo', type=TEXT),
        input('fecha_inicio', name='fecha_inicio', type=DATE),
        input('hora_inicio', name='hora_inicio', type=TIME),
        input('fecha_fin', name='fecha_fin', type=DATE),
        input('hora_fin', name='hora_fin', type=TIME),
    ])
    
    while True:
        # Agregue una nueva fila de entrada
         put_row([
             seleccionar('Tipo de ajuste', opciones=['Opción 1', 'Opción 2'], nombre='fit_type', tipo = TEXT),
             entrada('Parámetro 1', name='param_1', type=NUMBER),
             entrada('Parámetro 2', name='param_2', type=NUMBER),
             entrada('Parámetro 3', name='param_3', type=NUMBER)
         ])
    
        # Pregunte si el usuario desea agregar más filas de entrada
        agregar_mas = acciones(nombre='siguiente')
        if agregar_mas == 'siguiente':
            continuar
        más:
            romper
    
    # Obtener todas las entradas del grupo de entrada
    todos_los_datos = datos.copy()
    todos_los_datos.update(get_all_inputs())
    

    En este ejemplo, primero definimos las entradas iniciales en la variable data usando la función input_group(). Después, usamos un bucle while para agregar nuevas filas de entrada a las entradas existentes. Dentro del bucle, usamos la función put_row() para crear una nueva fila de entradas que incluye una lista desplegable para el tipo de ajuste y tres campos de entrada para los parámetros. También añadimos un botón de acciones para preguntar al usuario si quiere introducir más filas de entrada. Si el usuario hace clic en el botón “siguiente”, el bucle continúa y se agrega una nueva fila de entrada. Si hacen clic en cualquier otro botón, el bucle se detiene y todas las entradas del grupo de entrada y las filas de entrada añadidas dinámicamente se recuperan usando la función get_all_inputs(), que devuelve un diccionario de todos los nombres de entrada y sus correspondientes valores.

    ¡Espero que esto ayude! Hazme saber si tienes alguna pregunta adicional.

Comments are closed.