Global variables in GUI

조회 수: 2 (최근 30일)
Jerzy
Jerzy 2017년 12월 18일
댓글: Walter Roberson 2017년 12월 19일
Hi everyone, I have a problem with global variable in matlab GUI. I have a main window with options that i want to be active only after setting previous options. That options are placed in menu editor. So I have:
function PREV_OPTION_Callback(hObject, eventdata, handles)
global PREV_OPTION_set;
PREV_OPTION_menu;
if(PREV_OPTION_set)
set (handles.NEXT_OPTION,'enable','on','foregroundcolor',[0 0 0]); % next option is available
end
PREV_OPTION_set is beeing changed in PREV_OPTION_menu to value of 1. While debbuging everything is ok - PREV_OPTION_set equals to 1, but while running the program code in if scope is running since second callback function launch (after second clicking on PREV_OPTION from menu). What is wrong?
  댓글 수: 1
Adam
Adam 2017년 12월 19일
It would be a lot easier if you just returned a relevant argument from your PREV_OPTION_menu function. These are the type of errors you get when using global variables.

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2017년 12월 19일
If PREV_OPTION_menu is a script that is changing PREV_OPTION_set, and if PREV_OPTION_menu does not itself use "global" in talking about the variable, then the Just In Time compiler might not notice that the variable is changed.
If PREV_OPTION_menu is a function that is changing PREV_OPTION_set and PREV_OPTION_Menu does not use "global" in talking about the variable, then as far as MATLAB is concerned the global variable is not changed.
  댓글 수: 2
Jerzy
Jerzy 2017년 12월 19일
PREV_OPTION_menu is a function generated by matlab guide tool, which handles new window. After closing new window (by pushing button - in callback) PREV_OPTION_set variable is set to 1. In callback function for that key i have defined PREV_OPTION_set as global.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Function Creation에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by