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!