2012-01-22 57 views
8

我已經創建了一個小GUI來操作數據,最近我決定將數據庫移動到MySQL服務器。我創建了一個Java程序來回傳遞數據,並且我開始注意到訪問國外服務器時的延遲。如何知道在使用GUI時Matlab是否忙?

當您通過命令窗口運行腳本時,Matlab在左下角顯示「忙」文本,但在運行GUI時不會顯示「忙」文本。

那麼如何知道在使用GUI時Matlab是否忙?

在此先感謝。

編輯:快速示例。

我在命令窗口中(或腳本test.m)

for i = 1:100000 
    a = i+i; 
    disp(a); 
end 

狀態欄說: 「忙」 運行。

當我創建一個GUI,使用「Click me」按鈕執行相同的確切腳本。狀態欄上的繁忙標誌不出現。

這是爲什麼,我該怎麼辦?我希望能夠看到我的GUI是否忙碌。

+0

與其依賴主IDE中的忙標誌,不能實現某種等待欄或將自己的進度消息打印到命令提示符。這兩個想法都在這裏討論(http://blogs.mathworks.com/loren/2007/08/01/monitoring-progress-of-a-calculation/)。 – Chris

回答

3

您應該能夠使用Yair Altman上的提交statusbarMathWorks File Exchange修改主MATLAB窗口的狀態欄消息。他討論了它在a post on his blog "Undocumented Matlab"中的工作原理。

使用此實用程序,即使MATLAB不自動執行此操作,也應該能夠發出「忙碌...」消息。您的「單擊我」按鈕回調代碼可能會是這個樣子:

... 
statusbar(0, 'Busy...'); %# Set the status message 
test;      %# Run your function/script 
statusbar(0, '');   %# Clear the status message 
... 
+0

是的,它是一個整潔的小工具,但是當我說我創建了一個小GUI時,我說謊了。對我來說,這是一個新手,它是一個非常大的圖形用戶界面,並將其添加到我所有的回調(需要它)是很麻煩的。它修復了我所遇到的問題,但不是我希望的解決方案。我認爲這個問題解決了。感謝您的輸入。 –

4

它在主窗口的狀態欄中這麼說!

編輯:
所以答案是否定的,現在沒有辦法(很容易)說如果matlab忙於做一些命令行工作以外的事情。

+0

是的,但不是GUI。 –

+0

這可能是版本相關的,但爲什麼你需要知道這一點,我的意思是我明白這將是非常好的,但它會使任何功能障礙? – Ali

+0

不只是想詢問是否有一種簡單的方法在主窗口中插入此「忙」消息。當服務器不在您家門口時,需要幾秒鐘才能檢索「大量」數據,10.000x10矩陣。這將使GUI更加用戶友好。圖形用戶界面在繁忙時忽略命令,所以根本沒什麼大不了的。謝謝你的回覆。 –

2

你可以在GUI本身添加靜態文字和文字設置爲「忙」 /「空閒」前/後您的如果使GUI更加用戶友好,則會進行計算。

2

可能您在找什麼:

在命令行中輸入任何代碼。

例如財產以後像

asdfasdfasdfasdf

如果GUI程序仍在運行,那麼它會顯示忙碌,直到GUI功能已經結束。只有這樣它才能開始執行asdfasdfasdfasdf。

如果Gui已經完成,那麼它會立即執行asdfasdfasdfasdf並顯示相應的錯誤消息。

早些時候,所有Matlabs都顯示忙信息,當執行一個Gui啓動函數時。自2012年以來,這似乎不再是如此。

0

將一個靜態文本框添加到您的GUI。在你的計算圖標的回調,這樣寫:

set(handle.text,'string','busy') 
pause(0.1) 
. 
. 
. 
// Your code 
. 
. 
. 
pause(0.1) 
set(handle.text,'string','done') 
0

This thread了在MathWorks公司表示,這是可以做到使用File Exchange entry CmdWinTool。如果你下載這個文件,你可以用它來找出MATLAB是否忙於CmdWinTool('isBusy')。請注意,CmdWinTool利用了MATLAB使用Java中未記錄的特性,所以MathWorks不太可能支持它。