我正在开发一个必须显示进度条的 MATLAB GUI。我的功能有两个问题waitbar
:
我想使进度条模态化,以便在显示进度条时用户不能在 GUI 上做任何其他事情。
栏的右上角有最小化按钮和关闭按钮(与任何其他窗口非常相似)。如果按下关闭按钮,进度条会关闭,我希望隐藏或禁用此按钮,以便用户无法关闭进度条。
我该如何实现这些行为?
我正在开发一个必须显示进度条的 MATLAB GUI。我的功能有两个问题waitbar
:
我想使进度条模态化,以便在显示进度条时用户不能在 GUI 上做任何其他事情。
栏的右上角有最小化按钮和关闭按钮(与任何其他窗口非常相似)。如果按下关闭按钮,进度条会关闭,我希望隐藏或禁用此按钮,以便用户无法关闭进度条。
我该如何实现这些行为?
例子:
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,您应该研究 Matlab 中的线程。您可能需要并行计算工具箱才能访问必要的功能。你可以在这里找到更多。
就2号而言。您应该能够覆盖 GUI 代码中的 close 函数。
这将是这样的:
function MyWaitBar_CloseRequestFcn(hObject, eventdata, handles)
delete(hObject); % This of course deletes the object and we don't want this.
因此,您只需将函数留空。但不要忘记在某个时候关闭它!