matlab exe文件中的按钮不起作用

Posted

技术标签:

【中文标题】matlab exe文件中的按钮不起作用【英文标题】:the push button in matlab exe file doesn't work 【发布时间】:2012-12-31 10:54:40 【问题描述】:

我开发了一个 Matlab GUI 程序,它有四个编辑框和一个按钮;当我使用 Matlab 软件运行我的应用程序时,它可以正常工作,但是在将其转换为 exe 文件(独立)后,按钮不起作用,这意味着它不会在“结果”编辑框中显示输出。所以有什么问题? 这是我的按钮代码:

function btnCal_Callback(hObject, eventdata, handles)
a=str2num(get(handles.txbLow,'string'));
b=str2num(get(handles.txbHi,'string'));
f=get(handles.txbForm,'string');
x=0.5*((b-a)*(-1*(3/5)^0.5)+b+a);
g=subs(f,'x',x);
sum=(g)*(5/9);
x=0.5*(b+a);
g=subs(f,'x',x);
sum=sum+(g)*(8/9);
x=.5*((b-a)*((3/5)^.5)+b+a);
g=subs(f,'x',x);
sum=sum+g*(5/9);
result=sum*((b-a)/2);
set(handles.txbResult,'string',result);

【问题讨论】:

你的意思是如果你按下按钮就什么都没有发生?你能让exe做任何事情吗?您是否在使用 Matlab 的同一台计算机上使用该 exe? 【参考方案1】:

首先,我有点困惑

result=sum*((b-a)/2);   % "result" is numeric
set(handles.txbResult,'string',result);   % "result" should be string

接下来,只是作为一个提示。要“调试”您部署的代码,请尝试从 cmd 启动您的 exe,在这种情况下,您会在那里看到一些消息,它们可能会有所帮助。

【讨论】:

【参考方案2】:

您的“结果”必须是 double、char 或 cell。你可以这样做,例如

set(handles.txbResult,'String',char(result);

但是:我在 Mac 上使用非常相似的代码遇到了完全相同的问题。如果通过 Matlab 中的“运行”执行,应用程序运行得非常好,但是一旦我将它编译为一个独立的应用程序,按下按钮时就会听到这种错误声音,没有其他任何事情发生。

尝试将“结果”变量设置为“全局”有助于解决我编写的另一个程序的这个问题(一个非常简单的“计算 a+b”的事情),但对于提到的稍微复杂的代码(3 2 个输入和 3 个输出,而不是 1)。

正在运行的超级简单代码:

function pushbutton1_Callback(hObject, eventdata, handles) %the button to push
...some code...
global statText;
set(statText,'String',char(output));

function text1_CreateFcn(hObject, eventdata, handles) %the outputfield
global statText;
statText = hObject;

【讨论】:

以上是关于matlab exe文件中的按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB:保存命令不起作用

子进程似乎在 pyinstaller exe 文件中不起作用

为啥 matlab 中的源发送邮件(gmail)不起作用?

for循环在matlab中不起作用

从网站运行 .exe 文件不起作用

pyinstaller .exe 文件在导入另一个模块后不起作用