直接运行GUI.FIG文件时会不能运行,但通过.M文件运行就能成功。求解为何不能直接运行.FIG文件。

2025-03-22 10:58:33
推荐回答(1个)
回答1:

首先,直接运行.fig文件不会执行m文件中的OpeningFcn和CreateFcn。
OpeningFcn函数中有两句至关重要:
% Choose default command line output for **
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
第二句将handles保存在figure对象的“ApplicationData”的一个域名里,创建了figure自己的handles数据。
由于没有执行OpeningFcn,callback函数中的形参handles就失去了意义。可以在每个子函数前面加一行handles = guihandles( gcbf ) ;将figure句柄赋给handles。
如果程序中用global声明了全局变量,并在OpeningFcn或CreateFcn中赋了初值。则直接打开.fig文件则不能初始化全局变量,其值为最后一次运行时的值

解决方案:建议还是运行m文件或用GUIDE打开fig文件运行。