gpt4 book ai didi

user-interface - 由使用 Matlabs 指南构建的 GUI 的回调共享的变量

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:43 25 4
gpt4 key购买 nike

我有点在 Matlab 中发现 GUI 开发,并且我正在尝试一些基本概念的困难。如果有人能帮助我,我将非常感激。

我正在尝试使用 matlab 'guide' 构建一个 GUI,我所做的只是将图像加载到轴中,我想将它保存到某个全局变量中,该变量将由我的 GUI 中的所有回调共享,这我可以在其他事件处理程序上处理此图像的方式。

我无法找到实现它的方法,我尝试将一些变量声明为“全局”但它没有用。你能解释一下它是如何工作的,或者举一个简短的例子吗?谢谢

最佳答案

这是一个工作示例(使用 GUIDE),它以两种不同的方式完成您正在寻找的事情。总而言之,我更喜欢对 90% 的 GUI 使用“句柄”方法。我唯一会使用全局变量的情况是需要在 GUI 之外访问数据。

请注意,我在打开函数中添加了“handles.img = 0”。作为免责声明,浏览没有数据验证。我也只使用 .gif 文件对此进行了测试,并没有考虑将图像显示到轴的最佳方式。只是又快又脏:)

编辑:当您将此数据复制并粘贴到 M 文件中时。请务必将其命名为 picture_loader.m。 Matlab 用错误的文件名对我做了一些愚蠢的事情:)

希望这对您有所帮助。

function varargout = picture_loader(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @picture_loader_OpeningFcn, ...
'gui_OutputFcn', @picture_loader_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before picture_loader is made visible.
function picture_loader_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.img = 0; % Add the img data to the handle
guidata(hObject, handles);


% --- Outputs from this function are returned to the command line.
function varargout = picture_loader_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;


% --- Executes on button press in Browse.
function Browse_Callback(hObject, eventdata, handles)
global img % Store the data global
img_path = uigetfile('*.gif'); % browse for a file
img = importdata(img_path); % Load the image data
handles.img = img; % Store the img data in the handles struct
guidata(hObject, handles); % Save handles so all call backs have the updated data

% Plot the data in the axes1
axes(handles.axes1) % Select axes1 to write to
image(img.cdata) % Display the image
colormap(img.colormap) % Apply proper colormap

% --- Executes on button press in load_global.
function load_global_Callback(hObject, eventdata, handles)
global img
if isstruct(img)
axes(handles.axes1) %Select the axes1 on the gui
image(img.cdata)
colormap(img.colormap)
end

% --- Executes on button press in load_global_handle.
function load_handle_Callback(hObject, eventdata, handles)
if isstruct(handles.img)
axes(handles.axes1) %Select the axes1 on the gui
image(handles.img.cdata)
colormap(handles.img.colormap)
end

% --- Executes on button press in clear.
function clear_Callback(hObject, eventdata, handles)
cla(handles.axes1)

关于user-interface - 由使用 Matlabs 指南构建的 GUI 的回调共享的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5683620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com