【问题标题】:matlab using SizeChangedFcn doesn't call function using guidematlab 使用 SizeChangedFcn 不使用指南调用函数
【发布时间】: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 SizeChangedFcn property 设置为所需的函数句柄。你没有在这里包含你的那部分代码,所以我认为这就是问题所在(即在某处的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


【解决方案1】:

我在这里找到了解决方案:

https://www.mathworks.com/help/matlab/creating_guis/gui-options.html

通过选择工具 > GUI 选项从 GUIDE 布局编辑器访问对话框。

Other (Use SizeChangedFcn) — 对 UI 进行编程,使其在用户调整图形窗口大小时以特定方式运行。

在 gui 选项中选择“SizeChangedFcn”时,它为我创建了一个函数。

function figure1_SizeChangedFcn(hObject, eventdata, handles)
% hObject    handle to figure1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
disp("Hi");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 2016-07-31
    相关资源
    最近更新 更多