如何在MATLAB中制作waitbar
我正在开发一个MatlabGUI,在这里我必须显示一个进度条。我对如何在MATLAB中制作waitbar,matlab,user-interface,progress-bar,modal-dialog,Matlab,User Interface,Progress Bar,Modal Dialog,我正在开发一个MatlabGUI,在这里我必须显示一个进度条。我对waitbar函数有两个问题: 我想让进度条成为模态,这样当进度条显示时,用户就不能在GUI上做任何其他事情 在该栏的右上角有最小化按钮和关闭按钮(与其他窗口非常相似)。如果按关闭按钮,进度条将关闭,我希望隐藏或禁用此按钮,以便用户无法关闭进度条 如何实现这些行为?对于第一个问题,您应该研究Matlab中的线程。您可能需要并行计算工具箱来访问必要的函数。你可以找到更多 就2号而言。您应该能够覆盖GUI代码中的关闭函数 它将是这样的
waitbar
函数有两个问题:
如何实现这些行为?对于第一个问题,您应该研究Matlab中的线程。您可能需要并行计算工具箱来访问必要的函数。你可以找到更多 就2号而言。您应该能够覆盖GUI代码中的关闭函数 它将是这样的:
function MyWaitBar_CloseRequestFcn(hObject, eventdata, handles)
delete(hObject); % This of course deletes the object and we don't want this.
因此,只需将函数留空即可。但别忘了在某个时候关闭它 示例:
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终止正在运行的计算(我认为这是一件好事,毕竟您不想打扰用户!)我忘了提到,但您必须将GUI为waitbar触发的任何计算/处理放在另一个线程上。我很确定,在处理GUI的过程中,您可以继续使用GUI。