Working with push buttons in Matlab GUIs

  • MATLAB
  • Thread starter ekrum
  • Start date
  • Tags
    Matlab Push
In summary, the conversation is about creating a simple GUI in Matlab with two push buttons and two static text boxes. The goal is to have a question pop up and the user can press either the "yes" or "no" button, resulting in either another question or an answer in the second text box. The issue is that when the "yes" button is pressed, Matlab executes all of the commands instead of responding to the user's actions. The solution is to isolate each button function as a separate function in the Matlab file and to use GUIDE. The code for the GUI and script is also provided, with the goal of having the program respond differently every time the button is pressed.
  • #1
ekrum
2
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
  • #2
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.
 
  • #3
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.
 

1. How do I create a push button in a Matlab GUI?

To create a push button in a Matlab GUI, you can use the uicontrol function and specify the 'style' as 'pushbutton'. You can also use the GUIDE (Graphical User Interface Development Environment) to add a push button to your GUI.

2. How do I change the appearance of a push button in a Matlab GUI?

You can change the appearance of a push button in a Matlab GUI by using the 'ForegroundColor' and 'BackgroundColor' properties. These can be set to different color values or even to 'none' if you want a transparent button.

3. How do I make a push button perform a specific action in a Matlab GUI?

To make a push button perform a specific action in a Matlab GUI, you can use the 'Callback' property. This allows you to specify a function or command that will be executed when the button is clicked.

4. How do I disable a push button in a Matlab GUI?

To disable a push button in a Matlab GUI, you can set the 'Enable' property to 'off'. This will gray out the button and prevent it from being clicked. You can also use the 'Visible' property to hide the button completely.

5. How do I add an icon or image to a push button in a Matlab GUI?

To add an icon or image to a push button in a Matlab GUI, you can use the 'CData' property and specify the path to the image file. You can also use the 'String' property to add text or a label to the button.

Similar threads

  • MATLAB, Maple, Mathematica, LaTeX
Replies
5
Views
2K
  • Programming and Computer Science
Replies
1
Views
501
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
4K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
1K
  • Electrical Engineering
Replies
7
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
1
Views
787
  • MATLAB, Maple, Mathematica, LaTeX
Replies
6
Views
20K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
7K
Back
Top