注册 登录
编程论坛 Matlab

多个GUI互相调用时,一个GUI怎么把数据传递给另一个GUI啊?急!谢谢!!

james0802 发布于 2007-06-02 02:57, 10715 次点击
多个GUI互相调用时,一个GUI怎么把数据传递给另一个GUI啊?急!谢谢!!
12 回复
#2
leki2007-06-02 03:16
我只会用全局变量,你可以将要传输的数据赋值给一个全局变量(用global定义),然后在你要调用的地方再定义一次同样的全局变量,这样就可以了
#3
james08022007-06-02 03:40

谢谢,我试试.你好辛苦啊,这么晚还不睡?

#4
snowrainbow2007-06-02 09:51

可以在调用界面的m文件中被调用点handles.answer=answer;(answer只是一个存储数据的变量)
guidata(handles.figure1,handles);
那么figure1(被调用界面)下再写一句取数据就可以了。

#5
james08022007-06-05 00:46
这个终于搞定了……
#6
sandy19852007-06-12 21:33
回复:(snowrainbow)可以在调用界面的m文件中被调用...
请问怎么取数据啊?
#7
zhangenter2007-06-12 21:46
1.mydata = getappdata( FigureHandle, 'mydata' ) ;
2.handles = guidata( FigureHandle ); handles.mydata
3.mydata = get( UiHandle, 'UserData' ) ; % UiHandle为任意控件
4.globel mydata ; % 全部变量

比较常用的应该就那么几个,其他比如存mat或文本文件等,用的时候去读取文件,或者放在工作空间用fevalin去提取大概也有人用吧
#8
jinyujun20062007-06-30 11:48
给一例子,谢谢!!
#9
jinyujun20062007-06-30 12:02
没有成功!
#10
zhangenter2007-07-01 01:32

4个简单的m文件来说明这四种方法
1. my_gui1.m 代码如下
function varargout = my_gui1( varargin )

if nargin == 0
figure;
uicontrol('str', '提取', 'cal', 'my_gui1(''get_data'', gcbo)' ) ;

str = 'hello!' ;
setappdata( gcf, 'mydata', str ) ;
else
feval( varargin{:}) ;
end

function get_data( h )

str = getappdata( gcf, 'mydata' ) ;
msgbox(str)

2. my_gui2.m 代码如下
function varargout = my_gui2( varargin )

if nargin == 0
figure ;

uicontrol('str', '提取', 'cal', 'my_gui2(''get_data'', gcbo)' ) ;

str = 'hello!' ;
handles = guidata( gcf ) ;
handles.MyData = str ;
guidata(gcf, handles ) ;

else
feval( varargin{:}) ;
end

function get_data( h )
handles = guidata(gcf) ;
str = handles.MyData;
msgbox(str)


3. my_gui3.m 代码如下
function varargout = my_gui3( varargin )

if nargin == 0
figure ;

uicontrol('str', '提取', 'cal', 'my_gui3(''get_data'', gcbo)' ) ;

str = 'hello!' ;
set( gcf, 'UserData', str ) ;

else
feval( varargin{:}) ;
end

function get_data( h )
str = get( gcf, 'UserData' ) ;
msgbox(str)

4. my_gui4.m 代码如下
function varargout = my_gui4( varargin )

if nargin == 0
figure ;

uicontrol('str', '提取', 'cal', 'my_gui4(''get_data'', gcbo)' ) ;

global str
str = 'hello!' ;
else
feval( varargin{:}) ;
end

function get_data( h )
global str
msgbox(str)

[此贴子已经被作者于2007-7-1 1:34:40编辑过]

#11
orchis_20052007-07-16 14:45

按照你的方法试了下,结果一直报错:

在调用处程序:
handles.f=f;
guidata(handles.test2,handles);


报错:

???reference to non-existent field 'test2'.
请问到底哪出错了呢
谢谢!

#12
qdp05222007-08-31 08:33
辛苦了兄弟们,
俺现在在学习GUI设计的问题
#13
ansonjimli2007-09-09 12:32

guidata(hObject,handles);就可以了,嘿嘿。

1