【问题标题】:How can I make waitbar in MATLAB modal如何在 MATLAB 模态中制作等待栏
【发布时间】:2012-07-19 05:11:07
【问题描述】:

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

  1. 我想将进度条设为模态,以便在显示进度条时用户无法在 GUI 上执行任何其他操作。

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

如何实现这些行为?

【问题讨论】:

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


    【解决方案1】:

    例子:

    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 来终止正在运行的计算(我认为这是一件好事,毕竟您不想惹恼用户!)

    【讨论】:

      【解决方案2】:

      对于数字 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.  
      

      因此,您只需将函数留空。但别忘了在某个时候关闭它!

      【讨论】:

      • 我忘了提,但是您必须将 GUI 触发的等待栏的任何计算/处理放在另一个线程上。我很确定您可以在处理过程中允许继续使用 GUI。
      猜你喜欢
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多