如何从其他功能访问 GUIDE 图上的控件?

发布于 2024-10-30 05:07:45 字数 353 浏览 7 评论 0原文

我正在使用 GUIDE 为我的 MATLAB 项目创建一个 GUI

在按钮的一个回调中,我调用了一个函数。

[Name]= otherFunction(inputVariable);

set(handles.name,'String',Name);

收到该函数的输出后,我将名称标签设置为 Name 的值。是否可以从函数内部进行设置?我需要做什么才能允许该函数访问 GUIData?

我尝试过从该函数内部使用 set/get 但我似乎无法让它工作。

或者,我是否可以使“句柄”在全球范围内可用?

I am using GUIDE to create a GUI for my MATLAB project.

In one of my callbacks for a button, I call a function.

[Name]= otherFunction(inputVariable);

set(handles.name,'String',Name);

After I receive the output from that function, I set the name label to the value of Name. Is it possible to set that from inside the function? What do I have to do to allow that function to access the GUIData?

I have tried using set/get from inside that function but I can't seem to get it to work.

Alternatively, is there anyway that I can make the 'handles' globally available?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

念三年u 2024-11-06 05:07:45

从一个空白的 GUI 开始,简单地向其中添加一个按钮(标记为“btnTest”),以下代码可以正常工作:

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName(handles);
%]

%% --- Inner function
function [] = changeName(handles)
%[
    set(handles.btnTest, 'String', 'toto'); 
%]

因此,您的代码中可能还有其他问题。

如果您不打算将“handles”结构传递给“changeName”函数(即具有全局可用的句柄),您可以这样做:

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName();
%]

%% --- Inner function
function [] = changeName()
%[   
    handles = guihandles(); % recover handles for current figure
    set(handles.btnTest, 'String', 'toto'); 
%]

但它比直接传递“handles”慢得多。

Starting from a blank GUI and simply adding a pushbutton to it (tagged as 'btnTest'), the following code works fine:

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName(handles);
%]

%% --- Inner function
function [] = changeName(handles)
%[
    set(handles.btnTest, 'String', 'toto'); 
%]

So there's probably something else wrong in your code.

If you intend not to pass the 'handles' structure to the 'changeName' function (i.e. have handles globally available), you can do it like this:

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName();
%]

%% --- Inner function
function [] = changeName()
%[   
    handles = guihandles(); % recover handles for current figure
    set(handles.btnTest, 'String', 'toto'); 
%]

But it's much slower than passing 'handles' directly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文