MATLAB Working with push buttons in Matlab GUIs

  • Thread starter Thread starter ekrum
  • Start date Start date
  • Tags Tags
    Matlab Push
AI Thread Summary
The discussion revolves around creating a simple GUI in MATLAB that features two push buttons and two static text boxes for user interaction. The main issue is that pressing the "yes" button triggers all commands associated with it at once, rather than allowing for sequential prompts based on user input. The user seeks a solution to isolate button functions so that each button press leads to a new question or answer, creating a more interactive experience.The provided code includes the GUI setup and callback functions for the buttons. The user is advised to ensure that each button's functionality is distinct and that the GUI responds dynamically to user actions. Suggestions include using the GUIDE tool in MATLAB to manage GUI elements more effectively. The user aims to implement a system where pressing the buttons leads to different outcomes based on previous interactions, enhancing the overall flow of the application.
ekrum
Messages
2
Reaction score
0
I am trying to create a simple GUI in Matlab with two push buttons and two static text boxes. The basic premise is that a question will pop up and the user can press either the "yes" or "no" push button, resulting in either another question or an answer (in the second text box).

My current problem is that whenever I press "yes," Matlab executes every single command I have written for when the button is pressed. I want to be able to press the button, have a prompt come up, press the button again, have a new prompt come up, etc.

So basically, how can I make Matlab follow the user's steps with time, responding to their push differently every time they press the button?
 
Physics news on Phys.org
each button function should be isolated as a function in the MATLAB m file. Maybe you should post your code. Did you use GUIDE? Try typing guide at the command prompt.
 
This is my code for the gui:

function varargout = AlcoholicTool(varargin)
% ALCOHOLICTOOL MATLAB code for AlcoholicTool.fig
% ALCOHOLICTOOL, by itself, creates a new ALCOHOLICTOOL or raises the existing
% singleton*.
%
% H = ALCOHOLICTOOL returns the handle to a new ALCOHOLICTOOL or the handle to
% the existing singleton*.
%
% ALCOHOLICTOOL('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in ALCOHOLICTOOL.M with the given input arguments.
%
% ALCOHOLICTOOL('Property','Value',...) creates a new ALCOHOLICTOOL or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before AlcoholicTool_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to AlcoholicTool_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help AlcoholicTool

% Last Modified by GUIDE v2.5 14-Apr-2012 20:54:37

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @AlcoholicTool_OpeningFcn, ...
'gui_OutputFcn', @AlcoholicTool_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
% End initialization code - DO NOT EDIT


% --- Executes just before AlcoholicTool is made visible.
function AlcoholicTool_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to AlcoholicTool (see VARARGIN)

% Choose default command line output for AlcoholicTool
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes AlcoholicTool wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = AlcoholicTool_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in noButton.
function noButton_Callback(hObject, eventdata, handles)
% hObject handle to noButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
AlcoholicF(handles, 2);


% --- Executes on button press in yesButton.
function yesButton_Callback(hObject, eventdata, handles)
% hObject handle to yesButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
AlcoholicF(handles, 1);

And my code for the script:


function AlcoholicF(handles, iChoose)

% Game to determine whether or not you should drink tonight

set(handles.questionText, 'String', 'Are you trying to decide if you should drink tonight?');
set(handles.answerText, 'String', ' ');

switch iChoose
case 1
set(handles.questionText, 'String', 'Did you have an exam today?')
iChoose=0;
case 2
set(handles.questionText, 'String', 'Then why are you asking me?')
pause(1);
close('AlcoholicTool');
end

switch iChoose
case 1
set(handles.answerText, 'String', 'Then go drink!')
case 2
set(handles.questionText, 'String', 'Did you have a rough week?')
end

Basically I want to be able to press the button and have things happen sequentially instead of getting the same result every time.
 

Similar threads

Back
Top