2012-07-19 48 views
3

我正在MATLAB GUI中工作,我必須顯示一個進度條。我有兩個問題waitbar功能:如何在MATLAB模式下使用waitbar

  1. 我想要做的進度欄模式,使用戶不能做在GUI上任何其他事情,而顯示進度條。

  2. 酒吧右上角有最小化按鈕和關閉按鈕(幾乎和其他窗口一樣)。如果按關閉按鈕,進度條關閉,我希望隱藏或禁用此按鈕,以便用戶無法關閉該欄。

我該如何實現這些行爲?

回答

5

例子:

plot(sin(1:100)) 
h = waitbar(0, 'Please wait...'); 
set(h, 'WindowStyle','modal', 'CloseRequestFcn',''); 
for i=1:10 
    waitbar(i/10, h); 
    pause(.5) 
end 
delete(h) 

screenshot

通過設置CloseRequestFcn到空字符串,點擊關閉按鈕不會做任何事情。你只需要等待循環結束。

請注意,您仍然可以打按Ctrl + C殺死正在運行的計算(我認爲這是一件好事,你不想惹惱用戶畢竟!)

0

對於數字1,你應該看看Matlab中的線程。您可能需要並行計算工具箱才能訪問必要的功能。你可以找到更多here.

至於第2號去。您應該能夠覆蓋GUI代碼中的關閉功能。

這將是沿着這一線的東西:

function MyWaitBar_CloseRequestFcn(hObject, eventdata, handles) 

delete(hObject); % This of course deletes the object and we don't want this. 

所以,你會見好就收的功能空。但不要忘記在某個時候關閉它!

+0

我忘了提,但是你必須將其他線程上的等待欄觸發的GUI的任何計算/處理。我很肯定你可以在正在處理的時候繼續使用GUI。 – 2012-07-20 00:45:14