sto sviluppando un'interfaccia utente grafica (GUI) che consente agli utenti di selezionare una o più opzioni tramite caselle di controllo. Per ogni opzione selezionata, la GUI dovrebbe eseguire le seguenti azioni in sequenza:
- Seleziona file: apre una finestra di dialogo di selezione file che consente all'utente di selezionare un file specifico correlato all'opzione scelta.
- Formato e salvataggio: elabora il file selezionato utilizzando una funzione predefinita che formatta i dati e salva le modifiche.
Bel aiuto:
Ho bisogno di aiuto per gestire scenari in cui vengono selezionate più caselle di controllo contemporaneamente, assicurandomi che ogni opzione selezionata attivi in modo indipendente le funzioni associate senza conflitti.
Non so bene come impostare gli ascoltatori di eventi per ogni casella di controllo in modo che attivino le funzioni corrispondenti quando vengono selezionate.
Risultato
- Gli utenti possono selezionare una o più opzioni tramite caselle di controllo.
- Dopo la selezione, per ogni casella selezionata:
- Viene visualizzata una finestra di dialogo di selezione file in cui l'utente può selezionare il file desiderato.
- Il file selezionato viene elaborato dalla funzione di formattazione.
- I dati formattati vengono salvati in modo appropriato.
- L'interfaccia utente grafica rimane reattiva e fornisce feedback durante e dopo le operazioni.
Finora ho allegato il codice con i commenti in cui ho bisogno di aiuto.. inoltre se esiste una soluzione più elegante per l'interfaccia grafica, per favore condividila
Grazie
Names Default To Here( 1 );
directory_to_collect_data_table = "/C:/Users/";
data_list = {"datatable_1 ", "datatable_2", "datatable_3"};
userInput_dt = Function( {},
dt = Pick File(
"3. Pick Up Data Table_Total#1",
directory_to_collect_data_table,
{"JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
Return( dt );
);
datatable_1func = Function( {dt},
dt << New Column( "label",
Character, // The new column will store character values
Formula(
"D" || Substitute( :Extracted_Data, "A", "" ) // Prepend "D" and remove "A"
)
);
dt << Column( "Extracted_Data" ) << Hide( 1 );
dt:ROW1 << Data Type( Character );
final_data1 = Data Table( "final_data" );
);
// GUI for selecting and merging files
Userinput_1 = New Window(
Panel Box( "Select the datatable",
Check Box( data_list ),
Button Box( "Select Files", Userinput_1//add functionality
//add functionality if datatable_1 is selected then call function datatable_1func ( datatable_1 );
//whichever check box is selected accordingly a function is called
)
)
)
);Puoi usare << get selected per ottenere gli elementi selezionati (o << get selected indices se vuoi solo gli indici e non i valori). Quindi esegui un ciclo sull'elenco di selezione ed esegui le azioni
Names Default To Here(1);
nw = New Window("Example",
cb = Check Box(
{"One", "Two", "Three"}
),
Button Box("Go",
For Each({sel}, cb << get selected,
Match(sel,
"One", Show("FIRST"),
"Two", Show("SECOND"),
"Three", Show("THIRD")
);
);
);
);
Costruisci caselle di visualizzazione per nuove finestre (jmp.com)
È possibile associare una funzione alla casella di controllo. Viene chiamata ogni volta che l'utente interagisce con la casella di controllo. Vedere Aiuto > Indice script:
