Je développe une interface utilisateur graphique (GUI) qui permet aux utilisateurs de sélectionner une ou plusieurs options via des cases à cocher. Pour chaque option sélectionnée, l'interface graphique doit effectuer les actions suivantes de manière séquentielle :
- Choisir un fichier : ouvre une boîte de dialogue de sélection de fichiers pour permettre à l'utilisateur de sélectionner un fichier spécifique lié à l'option choisie.
- Formater et enregistrer : traitez le fichier sélectionné à l'aide d'une fonction prédéfinie qui formate les données et enregistre les modifications.
Aide intéressante :
J'ai besoin d'aide pour gérer les scénarios dans lesquels plusieurs cases à cocher sont sélectionnées simultanément, en veillant à ce que chaque option sélectionnée déclenche indépendamment ses fonctions associées sans conflits.
Je ne sais pas comment configurer des écouteurs d'événements pour chaque case à cocher afin de déclencher les fonctions correspondantes lorsqu'elles sont sélectionnées.
Résultat
- Les utilisateurs peuvent sélectionner une ou plusieurs options via des cases à cocher.
- Lors de la sélection, pour chaque case cochée :
- Une boîte de dialogue de sélection de fichiers apparaît pour permettre à l'utilisateur de sélectionner le fichier concerné.
- Le fichier sélectionné est traité par la fonction de formatage.
- Les données formatées sont enregistrées de manière appropriée.
- L'interface graphique reste réactive et fournit des commentaires pendant et après les opérations.
J'ai joint le code jusqu'à présent avec des commentaires où j'ai besoin d'aide. De plus, s'il existe une solution plus élégante pour l'interface graphique, veuillez la partager.
Merci
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
)
)
)
);Vous pouvez utiliser << get selected pour obtenir les éléments sélectionnés (ou << get selected indices si vous voulez simplement les indices et non les valeurs). Ensuite, faites une boucle sur la liste de sélection et effectuez les actions
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")
);
);
);
);
Construire des vitrines pour de nouvelles fenêtres (jmp.com)
Vous pouvez associer une fonction à la case à cocher. Elle est appelée chaque fois que l'utilisateur interagit avec la case à cocher. Voir Aide > Index des scripts :
