我正在开发一个MATLAB GUI,我必须在其中显示一个进度条。 waitbar
函数有两个问题:
我想制作进度条模态,以便用户在显示进度条时不能在GUI上执行任何其他操作。
条形图右上角有最小化按钮和关闭按钮(非常像其他任何窗口)。如果您按下关闭按钮,进度条将关闭,我希望隐藏或禁用此按钮,以便用户无法关闭该栏。
如何实施这些行为?
答案 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)
通过将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.
所以你只需将函数留空。但是别忘了在某个时候关闭它!