How can I share data in nested functions of a GUI?
古いコメントを表示
Hello, I'm not able to share data among nested functions of a GUI using the figure handle, namely the number of clicks on a figure. I'm able to do it only using a global variable. How could I use the handle instead of the global variable? Many thanks! This is my code:
I first define the global variable and then run the function in the workspace:
>>global globalVar >>h = shareData
Then here are the nested functions:
function handle=shareData() fprintf('Starting GUI\n') handle.fig = figure(); global globalVar; globalVar.Nclicks=0; handle.Nclicks=0; fprintf('Before set\n') globalVar handle set(handle.fig,'WindowButtonDownFcn',{@clickPosition,handle})
function handle=clickPosition(hObject, eventdata, handle) global globalVar; get(handle.fig,'CurrentPoint'); globalVar.Nclicks=globalVar.Nclicks+1; handle.Nclicks=handle.Nclicks+1; if globalVar.Nclicks==1 fprintf('After 1 click\n') else fprintf(['After ' , num2str(globalVar.Nclicks), ' clicks\n']) end globalVar handle
1 件のコメント
Jan
2013 年 9 月 11 日
Please follow the "? Help" link to learn how to format code in the forum. Thanks!
回答 (2 件)
Jan
2013 年 9 月 11 日
0 投票
There are many many threads concerning sharing data between functions of a GUI in this forum. Therefore I suggest to search for "share data gui":
Arthur
2013 年 9 月 11 日
0 投票
evalin and assignin are generally speaking not great ways to do this. Have a look at getappdata & setappdata. Have a look at this video:
カテゴリ
ヘルプ センター および File Exchange で Data Type Identification についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!