Цепные графические интерфейсы вместе в Matlab - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь создать программу в Matlab, которая объединяет несколько протестированных, функционирующих графических интерфейсов, но у меня возникают некоторые проблемы.

В одной функции у меня есть:

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 (), и они устанавливают возвращаемое значение, когда Нажата кнопка ОК (чтобы убедиться, что один не сработает, пока предыдущий не будет закрыт). Это работает точно так, как я хотел бы.

Однако для Ref GUI я создал его с помощью кнопок продолжения и закрытия. Я хочу, чтобы пользователь мог нажать «Продолжить» и продолжить выполнение программы, пока Ref GUI остается открытым. В идеале это может привести к вызову OHMGUI1, но, похоже, он даже не отображает оператор проверки.

Я подозреваю, что ошибка в Ref GUI, который открывается в нужное время, но я не могу получить ничего, что происходит после нажатия кнопок продолжения или закрытия (за исключением закрытия 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

Что я могу сделать, чтобы программа продолжала работать как положено?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...