【发布时间】:2018-08-07 17:34:50
【问题描述】:
我想实现一些代码,这样当用户调整窗口大小时,我可以调用一个函数。我正在使用 matlab 2018,他们建议使用 SizeChangedFcn 而不是 ResizeFcn。我没有过多地处理回调,但是每次调整窗口大小时我都无法让我的 gui 调用 SizeChangedFcn。目前,该函数根本没有被调用。
function varargout = firstgui(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @firstgui_OpeningFcn, ...
'gui_OutputFcn', @firstgui_OutputFcn, ...
'SizeChangedFcn', @resizeui, ... % <-- added this line
'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
function resizeui(hObject,event)
disp("Hi");
编辑:
我应该提到我正在使用一个严重依赖指南的程序,所以我坚持使用该实现。
这是“gui_mainfcn”中的内容
function varargout = gui_mainfcn(gui_State, varargin)
% GUI_MAINFCN Support function for creation and callback dispatch of GUIDE GUIs.
% GUI_MAINFCN is called from inside MATLAB code files generated by GUIDE to handle
% GUI creation, layout, and callback dispatch.
%
% See also: GUIDE.
% GUI_MAINFCN provides these command line APIs for dealing with GUIs
%
% UNTITLED, by itself, creates a new UNTITLED or raises the existing
% singleton*.
%
% H = UNTITLED returns the handle to a new UNTITLED or the handle to
% the existing singleton*.
%
% UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in UNTITLED.M with the given input arguments.
%
% UNTITLED('Property','Value',...) creates a new UNTITLED or raises the
% existing singleton*. Starting from the left, property value pairs
% are
% applied to the GUI before untitled_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to untitled_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
% Copyright 1984-2015 The MathWorks, Inc.
gui_StateFields = {'gui_Name'
'gui_Singleton'
'gui_OpeningFcn'
'gui_OutputFcn'
'SizeChangedFcn' %added this line as well does not work yet
'gui_LayoutFcn'
'gui_Callback'};
【问题讨论】:
-
您需要将 figure
SizeChangedFcnproperty 设置为所需的函数句柄。你没有在这里包含你的那部分代码,所以我认为这就是问题所在(即在某处的gui_mainfcn)。 -
您好,新手,我还是个 matlab 新手。感谢您的答复。我确实放置了 "'SizeChangedFcn', @resizeui, .." 以在 gui_state 结构中调用 "resizeui" 函数,然后有一个语句保持 gui_mainfcn(gui_State, varargin{:});你是这个意思吗?如果不能,您能否更具体地提供一个代码示例,说明还需要包含哪些内容?
-
您是否使用 GUIDE 执行此操作?
gui_mainfcn中实际上是什么代码? -
是的,很好,我正在使用指南。我正在开发的程序已经严重依赖它,所以我无法改变它。这是其中的内容: function varargout = gui_mainfcn(gui_State, varargin) % GUI_MAINFCN 支持 GUIDE GUI 创建和回调调度的函数。 % GUI_MAINFCN 从 GUIDE 生成的 MATLAB 代码文件内部调用,以处理 % GUI 创建、布局和回调调度。 %
-
我觉得我帮不上什么忙。我不使用 GUIDE,这似乎是一个与 GUIDE 如何管理事物特别相关的问题,而我从不热衷于此。如果您自己构建此 GUI,则在创建图形时,您将设置图形属性。例如:
hFigure = figure('SizeChangedFcn', @resizeui, ...);在 GUIDE 生成的代码中的某个时刻,我认为它必须做同样的事情(或者 应该 是,但不是你的情况)。
标签: matlab function callback resize matlab-guide