关于如何编写用于建模的小型更新/进度窗口的脚本的建议亲爱的 JMP 社区:
我有兴趣编写一个小窗口的脚本,当我运行模型构建脚本时会弹出一个小窗口,以显示当前正在运行的步骤(数千步)。 我正在考虑做类似下面的脚本的事情,它可以工作,但每次也会创建一个新窗口。
Names Default To Here( 1 );
imax = 5;
For( i = 1, i <= imax, i++,
update_window = New Window( "Progress Update",
Text Box( " Current step " || Char( i ) || " of " || Char( imax ), <<SET font="" size=""></SET>
当然,我的imax比5大得多,这只是一个测试脚本。 我在以下每次迭代中得到输出(在本例中为五个窗口):

但是,正如前面提到的,这将产生数千个这样的窗口,这是我不想要的。 我只想更新总数中的“i”步。
建模脚本内置于数据表中,并具有自己的 FOR 循环,因为它一次一行运行一个巨大的调整表 - imax 是该调整表的 NRows(),并且可以是 24k+ 行的数量级。 我想在主 for 循环中插入一个创建单身的窗口停留在屏幕上并告诉用户它处于 NRows() 的哪一步“i”。 (滚动数据表很乏味,这似乎是一个合理的解决方案。)
我不需要进度条或类似的东西,只需要一个在主 FOR 循环的每次迭代时都会改变的简单数字。 顺便说一句,只有一个 FOR 循环。
感谢您的建议!
DS
回复:关于如何编写用于建模的小型更新/进度窗口的脚本的建议更新:
修改我引用的帖子中的 JSL 后,我能够创建此测试窗口以将进度显示为条形图(可视化),以及 Y 的实际步数 X。 这很有趣!
Names Default To Here( 1 );
i = 1;
imax = 100;
dlgStatus = New Window( "Overall Modeling Progress",
V List Box(
dlg_gb = Graph Box(
Title( "Overall Modeling Progress" ),
FrameSize( 150, 15 ),
X Scale( 0, 100 ),
Y Scale( 0, 1 ),
yaxis( show major ticks( 0 ), show minor ticks( 0 ) ),
xname( "% complete" ),
yname( "" )
),
tb = Text Box(
" Current step " || Char( i ) || " of " || Char( imax ),
<<SET font="" size=""></SET>
回复:关于如何编写用于建模的小型更新/进度窗口的脚本的建议你好@马克贝利,
感谢您对此的快速回复。 完美解决方案!
读完这篇文章后,我正朝着这个方向前进: https://community.jmp.com/t5/Discussions/JMP-script-progress-indicator/mp/6057#M6056 。 但是,我还差几步。 对于测试脚本,我需要在 FOR 循环中添加 Wait(),因为它运行得太快了。 建模每一步都需要更长的时间,所以我并不担心这一点。
在未来的版本中,我可能会通过修改上面帖子中其他用户的操作来将其更改为“进度条”。
再次感谢!,
DS
回复:关于如何编写用于建模的小型更新/进度窗口的脚本的建议在迭代开始之前单独打开包含更新的窗口。 将文本框的引用保存在变量中。 将 << Set Text( "new text" ) 消息发送到迭代内的引用。
Names Default To Here( 1 );
imax = 5;
update_window = New Window( "Progress Update",
tb = Text Box( "Initial message", <<SET font="" size=""></SET>