如何在MATLAB模式中创建waitbar

时间:2012-07-19 23:10:48

标签: matlab user-interface progress-bar modal-dialog

我正在开发一个MATLAB GUI,我必须在其中显示一个进度条。 waitbar函数有两个问题:

  1. 我想制作进度条模态,以便用户在显示进度条时不能在GUI上执行任何其他操作。

  2. 条形图右上角有最小化按钮和关闭按钮(非常像其他任何窗口)。如果您按下关闭按钮,进度条将关闭,我希望隐藏或禁用此按钮,以便用户无法关闭该栏。

  3. 如何实施这些行为?

2 个答案:

答案 0 :(得分: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 来杀死正在运行的计算(我认为这是一件好事,毕竟你不想惹恼用户!)

答案 1 :(得分:0)

对于数字1,您应该在Matlab中查看线程。您可能需要并行计算工具箱才能访问必要的功能。您可以找到更多here.

就2号而言。您应该能够覆盖GUI代码中的close函数。

这将是这样的:

function MyWaitBar_CloseRequestFcn(hObject, eventdata, handles)

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

所以你只需将函数留空。但是别忘了在某个时候关闭它!