matlab - 在 Matlab 中将 GUI 链接在一起
问题描述
我正在尝试在 matlab 中创建一个程序,将几个经过测试的、功能正常的 GUI 链接在一起,但我遇到了一些麻烦。
在一个功能中,我有:
global Status;
global value1;
Status = 'setup';
switch Status
case 'setup'
ADone = ASetup; %Calls setup function which should return a value when done
if strcmp(ADone, 'yes')==1
Status = 'Pos1';
end
case 'Pos1'
value1 = OHMgui1;
Status = 'Pos2';
case 'Pos2'
%Still work in progress
end
在我的 Asetup 函数中,我有:
function done = ASetup
AStatus = GUI1;
BStatus = GUI2();
CStatus = GUI3();
DStatus = GUI4();
%Up until here everything goes as intended
Refstatus = RefGUI();
done = 'yes'; %Returns value when finished
disp (done) %Check statement, does not execute, error happens somewhere before here
end
GUI 1-4 基本上只显示带有 OK 按钮以关闭它们的参考图像,我通过使用 uiwait() 来控制它们,并在按下 OK 按钮时让它们设置一个返回值(以确保直到上一个已关闭)。这完全符合我的要求。
但是对于 RefGUI,我使用继续和关闭按钮创建它。我希望用户能够在 RefGUI 保持打开状态时单击继续并让程序继续运行。理想情况下,这将导致调用 OHMGUI1,但它似乎甚至不显示检查语句。
我怀疑错误出现在 RefGUI 中,它在正确的时间打开,但是在按下继续或关闭按钮后我什么也没有发生(除了在程序不继续的情况下关闭 GUI)。它的代码是:
function varargout = RefGUI(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @ClampRef_OpeningFcn, ...
'gui_OutputFcn', @ClampRef_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function RefGUI_OpeningFcn(hObject, eventdata, handles, varargin)
matlabImage = imread('C:...reference.jpg');
image(matlabImage)
axis off
axis image
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
set(handles.pushbutton2,'enable','off') %Disable close button until continue is pressed
function varargout = RefGUI_OutputFcn(hObject, eventdata, handles)
uiwait();
global valueout;
varargout{1} = valueout;
%I have also tried disabling the above 3 lines with no difference.
function pushbutton1_Callback(hObject, eventdata, handles)
global valueout;
valueout = 'Finished';
set(handles.pushbutton2,'enable','on') %enable close button
set(handles.pushbutton1,'enable','off') %disable continue button
return
function pushbutton2_Callback(hObject, eventdata, handles)
closereq(); %close button closes GUI window
我可以做些什么来使程序按预期继续?
解决方案
推荐阅读
- apache-spark - Spark - 如何重命名orc文件(不是表)中的列
- c++ - 将指针传递给导致第二次调用使程序崩溃的函数
- python - TypeError:无法根据规则“安全”使用 hvPlot 和 datashade 将数组数据从 dtype('int64') 转换为 dtype('int32')
- javascript - 每次进入屏幕时重新获取数据
- c# - 无法使用 JWT 方法(C#)生成新令牌
- dataframe - 使用分区批处理过程生成多个列,无需洗牌或自定义连接逻辑
- java - 如何将当前日期时间小时秒保存为字符串,以便我可以一次又一次地重复使用它
- git - Git分支-b“分支名称”从master创建?
- revit-api - Revit API - 如何在调用 PostCommand 后返回“正常代码”
- android - 当切换其他视图的可见性时,我的布局中的片段布局会上下移动