【问题标题】:How to block GUI while function with output executes?如何在执行输出功能时阻止 GUI?
【发布时间】:2018-01-24 20:36:43
【问题描述】:

我正在 GUIDE 中创建一个 MATLAB 应用程序,现在我遇到了一个问题。我需要调用一个需要很长时间才能执行并返回一个值的函数,但是在执行该函数时我希望 GUI 等待返回值。

我尝试使用 waitfor,但这样我仍然可以与 GUI 交互,并且无法获取返回值...

waitfor(function);

我可以想到禁用所有 GUI 然后将其重新启用但我同时启用和禁用对象...

你知道解决这个问题的方法吗?

【问题讨论】:

  • 将图Visible设置为'off'怎么样?
  • 我刚刚测试过了。快速而肮脏的解决方案。最初,我想限制玩家互动,但在这种情况下让它消失要好得多。谢谢@XiangruiLi。把它作为回应,以便我可以标记它。

标签: matlab function user-interface return wait


【解决方案1】:

一个简单的解决方案是在执行长时间运行的函数之前创建一个带有消息“请稍候...”的模式对话框,然后在它完成后关闭对话框。一个模态对话框将在 GUI 前面,并且不允许与后面的窗口进行交互。

用户可以点击对话框上的“关闭”按钮,但是你可以通过设置对话框的“CloseRequestFcn”属性来覆盖它,这样关闭按钮什么都不做(不幸的是你不能轻易隐藏按钮)。

【讨论】:

    【解决方案2】:

    我喜欢 Sam Roberts 提出的模态对话框。没有神秘感,而且用户友好。

    如果可以的话,另一个肮脏而简单的解决方案可能是完全隐藏 GUI:

    set(hFig, 'Visible', 'off');
    

    完成后将其设置为“开启”。确保在 catch 块中将其设置为“on”将是一个很好的做法,以避免在执行过程中由于错误而导致 GUI 消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 2021-09-20
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多