正在开发一个图形用户界面 (GUI),允许用户通过复选框选择一个或多个选项。对于每个选定的选项,GUI 应按顺序执行以下操作:
- 选择文件:打开文件选择器对话框,允许用户选择与所选选项相关的特定文件。
- 格式化和保存:使用预定义函数处理所选文件,该函数格式化数据并保存更改。
很好的帮助:
我需要帮助处理同时选中多个复选框的情况,确保每个选定的选项独立触发其相关功能而不会发生冲突。
我不确定如何为每个复选框设置事件监听器以便在选中时触发相应的功能。
结果
- 用户可以通过复选框选择一个或多个选项。
- 选择后,对于每个选中的框:
- 出现一个文件选择器对话框,供用户选择相关文件。
- 选定的文件已通过格式化功能进行处理。
- 格式化的数据被适当保存。
- GUI 保持响应并在操作期间和操作后提供反馈。
我已经附上了到目前为止的代码,并在需要帮助的地方添加了注释。如果有更优雅的 GUI 解决方案,请分享
谢谢
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
)
)
)
);您可以使用 << 获取选定项来获取选定项(或者,如果您只想要索引而不是值,则可以使用 << 获取选定索引)。然后循环选择列表并执行操作
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")
);
);
);
);
为新窗口构建展示框 (jmp.com)
您可以将函数与复选框关联。每当用户与复选框交互时,都会调用该函数。请参阅帮助 > 脚本索引:
