關於如何編寫用於建模的小型更新/進度窗口的腳本的建議親愛的 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>