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文件中的按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章