【问题标题】:How to save passed value between two functions(callbacks) after closing the GUI?关闭 GUI 后如何保存两个函数(回调)之间的传递值?
【发布时间】:2018-06-24 10:02:44
【问题描述】:

我需要使用第一个函数的输出作为第二个函数的输入(回调)。如果我不关闭 GUI,这不是问题,但我想使用第一个回调,保存值,关闭 GUI,然后再次打开 GUI 并在第二个函数中使用该值。希望大家理解。

我尝试将 CloseRequestFcn 和 OpeningFcn 与 setappdata/getappdata 或保存/加载一起使用,但要么无法完成,要么我做错了什么。

我遇到了一些不同的错误,例如“引用不存在的字段”或类似的错误,但仍然卡住。

【问题讨论】:

  • 您可以更改您的 GUI 以允许输入值吗?这样,在您的第二次调用中,您可以执行MyGUI( valueFromFirstGUIRun ); 之类的操作,然后在打开函数中使用该值。

标签: matlab function user-interface callback


【解决方案1】:

我看到两个选项:

  1. 使用全局变量:使用global 将变量声明为全局变量。当您按下“保存”按钮和/或关闭 GUI 时写入此变量。然后在您打开 GUI 和/或按下“加载”按钮时从全局读取。
  2. 使用文件:使用saveload 函数将Matlab 变量存储和检索到文件中。有关如何仅存储特定变量的信息,请参阅 Matlab 文档。

全局变量示例:

global testvar

if isempty(testvar)
    testvar = 0;
end

disp(datestr(now))
disp(testvar)

testvar = testvar + 1;

文件示例:

if exist('testfile.mat', 'file')
    load('testfile', 'testvar')
else
    testvar = 0;
end

disp(datestr(now))
disp(testvar)

testvar = testvar + 1;

save('testfile', 'testvar')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2017-07-20
    • 2020-12-07
    相关资源
    最近更新 更多