使用GUI时,如何知道Matlab是否正忙?

时间:2012-01-22 12:36:10

标签: user-interface matlab

我创建了一个小GUI来操作数据,最近我决定将数据库移动到MySQL服务器上。我创建了一个Java程序来来回传输数据,我开始注意到在国外访问服务器时的延迟。

当您通过命令窗口运行脚本时,Matlab在左下角显示“忙”文本,但在我运行GUI时则不显示。

那么在使用GUI时我怎么知道Matlab是否忙?

提前致谢。

编辑:快速示例。

我在命令窗口(或脚本test.m)中运行

for i = 1:100000
  a = i+i;
  disp(a);
end

状态栏显示“忙碌”。

当我创建GUI时,使用“Click me”按钮执行完全相同的脚本。状态栏上的忙碌标志不会出现。

为什么这是我能做些什么呢?我希望能够看到我的GUI是否忙碌。

6 个答案:

答案 0 :(得分:4)

它在主窗口的状态栏中这样说!

编辑:
所以答案是否定的,现在没有办法(轻松)说出matlab是否忙于做除命令行工作以外的事情。

答案 1 :(得分:3)

您应该可以使用statusbarYair Altman的提交MathWorks File Exchange修改主MATLAB窗口的状态栏消息。他在a post on his blog "Undocumented Matlab"中讨论了它的工作原理。

使用此实用程序,即使MATLAB没有自动执行此操作,您也应该能够显示“Busy ...”消息。您的“Click me”按钮回调的代码可能如下所示:

...
statusbar(0, 'Busy...');  %# Set the status message
test;                     %# Run your function/script
statusbar(0, '');         %# Clear the status message
...

答案 2 :(得分:2)

您可以在GUI本身上添加静态文本,并在计算完成之前/之后将其文本设置为“忙碌”/“空闲”,如果使GUI更加用户友好是关注点。

答案 3 :(得分:2)

可能你在寻找什么:

在命令行中输入任何arbritary代码。

e.g。像

这样的东西

asdfasdfasdfasdf

如果GUI例程仍在运行,那么它将显示忙,直到GUi功能结束。只有这样它才能开始执行asdfasdfasdfasdf。

如果Gui已经完成,那么它将立即执行asdfasdfasdfasdf并显示相应的错误消息。

早些时候,当执行Gui-started功能时,所有Matlabs也会显示忙音。自2012年以来,似乎不再是这种情况。

答案 4 :(得分:0)

在GUI中添加静态文本框。在您的计算图标回调中,写下:

set(handle.text,'string','busy')
pause(0.1)
.
.
.
// Your code
.
.
.
pause(0.1)
set(handle.text,'string','done')

答案 5 :(得分:0)

MathWorks上的

This thread表示可以使用File Exchange entry CmdWinTool完成。如果您下载该文件,您可以使用它来查明MATLAB是否忙于CmdWinTool('isBusy')。请注意,CmdWinTool在MATLAB使用Java时利用了未记录的功能,因此MathWorks不太可能支持它。