MATLAB Answers

2

How do I wait for an appdesigner pushbutton press from a script

Asked by Gary Stirk on 22 Dec 2016
Latest activity Answered by Gary Stirk on 3 Jan 2017
I have created a matlab script which calls an app designer gui. The gui has a selection of raido buttons to select a system frequency to be simulated. I want to pause the script until a I've pushed a SUBMIT button that is in the GUI.
I am getting the app handle and button handle ok from the script and have it working waiting onthe closure of the gui using the waitfor() function but I can't seem to get it to waif for the gui Button to be pressed.
clear all;
close all;
global modFreq; % system Freq set in GUI from radio button
%%instantiate my gui
guiHandle = mySystemConfigGui;
buttonHandle = guiHandle.RunButton;
%
waitfor(guiHandle);
fprintf('continuing script..\n');
How do I wait for an appdesigner pushbutton press from a script

  0 Comments

Sign in to comment.

3 Answers

Answer by Rylan Dmello on 27 Dec 2016
 Accepted Answer

Hello Gary,
You can use the uiwait function with the uiresume function instead of the waitfor function in order to pause execution while waiting for a button press. Please see the uiwait documentation page for an example:
https://www.mathworks.com/help/matlab/ref/uiwait.html
Note that you may have to register a new callback function in the button in order to run the uiresume function.
Rylan

  0 Comments

Sign in to comment.


Answer by Gary Stirk on 3 Jan 2017

Thanks Rylan,
This definitely got me over the hump. For a novice like myself the doc was not completely clear so I've given my final solution below possibly to help others. Notes:
1. The gui was created using app designer
2. I had to make the uiwait() parameter the giuFigure handle not the button handle.
3. Added the uiresume() with the parameter being the guiFigure handle used in the uiwait() of the .m program.
MatLab.m relevant code:
%%instantiate my gui
guiHandle = mySystemConfigGui;
%
guiFigureHandle = guiHandle.myConfigurationUIFigure;
uiwait(guiFigureHandle);
fprintf('continuing script..\n');
gui RunPushButtonPushed callback
% Button pushed function: RunButton
function RunButtonPushed(app, event)
uiresume(VeridianConfigurationUIFigure);
end

  0 Comments

Sign in to comment.


Answer by Gary Stirk on 3 Jan 2017

gui RunPushButtonPushed callback correction (uiresume() parameter should have had 'app.'prefix
% Button pushed function: RunButton
function RunButtonPushed(app, event)
uiresume( app.VeridianConfigurationUIFigure);
end

  0 Comments

Sign in to comment.