标签: matlab-gui

如何在数字中添加"教程消息div"?

安装R2018b后,我打开的第一个数字包含一条有趣的消息(以蓝色显示):

静态图像

它之所以有趣,是因为它包含文本换行,透明度等功能,即使文本调整大小,图像也保持恒定宽度(这让我想起了CSS3 flexbox,因此标签)等等.

动画

动画的最后一部分是慢动作,以更好地显示div的大小如何跟随图形的大小.

如果重要,我正在使用Win 10 v1803.

题:

我想知道我们如何可以得出类似的,定制的,申报单(对于缺乏一个更好的词)在我们的数字.(重要的是要强调这不是一个UIFigure!)


到目前为止我发现了什么:

  • " 了解更多"链接打开页面:

    web(fullfile(docroot, 'matlab/creating_plots/interactively-explore-plotted-data.html'))
    
    Run Code Online (Sandbox Code Playgroud)

    然而,任何一个webdocroot(或偶数doc)的入口点的断点都没有被击中.

  • 假设这个元素是Child图中的一个,我试图找到它的句柄:

    >> set(gcf,'MenuBar','none'); findall(gcf)
    
    ans = 
      22×1 graphics array:
    
      Figure                (1)
      ContextMenu
      AnnotationPane
      Axes
      AxesToolbar
      Text
      Text
      Text
      ToolbarStateButton    (Brush/Select Data)
      ToolbarStateButton    (Data Tips)
      ToolbarStateButton    (Rotate 3-D)
      ToolbarStateButton    (Pan)
      ToolbarStateButton    (Zoom In)
      ToolbarStateButton    (Zoom Out)
      ToolbarPushButton     (Restore View)
      Button
      Button
      Button
      Button
      Button
      Button
      Button
    
    Run Code Online (Sandbox Code Playgroud)

    然而,使这些控件不可见使用set(h(2:end), 'Visible', …

matlab undocumented-behavior flexbox matlab-figure matlab-gui

12
推荐指数
1
解决办法
79
查看次数

创建一个用户可以选择文件或文件夹的对话框

在MATLAB中,有一个提示用户选择一个或多个文件uigetfile的功能- 还有另一个允许用户选择文件夹的功能 - uigetdir.

我想向用户提供选择的能力或者一个文件文件夹,使用单一窗口,因为这是对UX我试图创造重要.

到目前为止,我发现使用上述功能1的唯一解决方案需要额外的步骤,要求用户提前选择他们想要选择的实体类型,并相应地调用相应的功能 - 我觉得不方便.

那我怎么能有一个允许我选择其中一个的对话框呢?

matlab user-interface user-experience filechooser matlab-gui

7
推荐指数
1
解决办法
81
查看次数

在多监视器配置中确定MATLAB的监视器

我从公司网站到另一个网站移动很多.在任何一天,我可能只有我的笔记本电脑或多达四台显示器.有了多个显示器,我不知道我将选择使用哪个显示器用于MATLAB主GUI(双击matlab.exe时启动的主GUI).这取决于可用监视器的分辨率.

我使用的脚本利用程序生成的GUI(而不是GUIDE),似乎MATLAB总是在第一台显示器上弹出它们.我研究了一点,发现通过使用定位图形用户界面来选择的显示器p = get(gcf, 'Position'),set(0, 'DefaultFigurePosition', p)movegui命令,但这次如果我事先知道我要使用的显示器才有效.

有没有办法找出主要的MATLAB GUI在哪台显示器上运行,并在同一台显示器上弹出其他小的GUI?

matlab position multiple-monitors matlab-figure matlab-gui

5
推荐指数
1
解决办法
879
查看次数

如何在MATLAB中实现已弃用的完整十字线指针功能?

我试图用一个完整的十字准线替换图表图上的指针(也就是说,一组2条垂直线,它们垂直和水平地延伸到图的边缘并跟随鼠标光标).多年前,我用这行代码完成了这个任务:

set(gcf,'Pointer','fullcross')
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试现在运行此行时,我收到以下消息:

Warning: Full crosshair pointer is no longer supported. A crosshair pointer will be used instead.
Run Code Online (Sandbox Code Playgroud)

我真的想找到一种实现此功能的替代方法,但迄今为止无法实现.我遇到了以下功能:MYGINPUT,但它似乎没有完成我正在寻找的东西.有没有人有什么建议?

matlab cursor matlab-figure matlab-gui

4
推荐指数
1
解决办法
458
查看次数

滑块在使用后从GUI消失

我尝试以编程方式创建一个MATLAB GUI,并面对我的滑块在使用后消失的问题.我隔离了问题以保持代码简短.在这个GUI中,我想在plotmatrix每次使用滑块时刷新(忽略滑块的值与我的程序完全无关的事实,如前所述,我真的想保持代码清洁,这就是为什么我也删除了这个功能) .这是代码(您必须将其作为函数运行):

function StackOverflowQuestion_GUI()
    % clear memory
    close all; clc;

    % initialize figure
    f = figure;

    % create main axes
    AX_main = axes('Parent',f,...
        'Units','normalized','Position',[.1 .2 .8 .7]);

    % create slider
    uicontrol('Parent',f,...
        'Style','slider','Callback',{@sliderCallback,AX_main},...
        'Units','normalized','Position',[0.05 0.05 0.9 0.05]);

    plotmatrix(AX_main,randn(500,3));
    title('Random Plotmatrix');
end

function sliderCallback(~,~,AX_main)   % callback for slider
    plotmatrix(AX_main,randn(500,3));
    title('Random Plotmatrix NEW');
end
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!我想我误解了AXES的概念.当我绘制到我创建的AXES手柄时,为什么该图的其他部分也会受到影响?如果有人能向我解释这个图形处理系统基本上是如何工作的,那也是非常好的!

matlab user-interface slider matlab-figure matlab-gui

2
推荐指数
1
解决办法
179
查看次数

如何通过回调函数传递varargin

我正在编写一个图形窗口的代码,其中包含几个运行回调函数的GUI项.目前我有一个文本框和一个滑块控件,我进行了设置,以便更改文本框值不仅会更改显示的数据,还会更新滑块位置以匹配该值.我varargin遇到的问题是试图保持我的参数(在创建图形窗口时输入到main函数)被包含在父cell变量中.当我的顶层varargin包含一个值参数对,varargin是一cell维的1x2的.没关系.通常,可以将所有这些参数传递给内部函数调用,如下所示:

function topfunc(varargin)
%code
do_something(varargin{:})
Run Code Online (Sandbox Code Playgroud)

该函数dosomething可以看到正确的参数列表.但是,当我通过callback定义传递varargins时,就像在

txtui = uicontrol(hf,'Style','edit','string',fristframe,'backgroundcolor','y',...
    'position',[10 100 50 20],'Tag','Scaler','UserData',lsatframe,...
    'Callback',{@doslide,adcname,mode,goodframes,{varargin{:}} } ); 
Run Code Online (Sandbox Code Playgroud)

然后该函数 doslide调用绘图更新功能dordplot

 function doslide(theui,event,fileName,mode, goodframes,varargin)
% code snipped...

dordplot(slidinfo,event,fileName,mode,goodframes,varargin{:});
end
Run Code Online (Sandbox Code Playgroud)

里面doslide,varargin是含有期望的1×2单元1x1的细胞.

我在我的最终函数中添加了一个kludge修复程序,其中varargin实际使用的内容与行

varargin = varargin{:};
Run Code Online (Sandbox Code Playgroud)

但是,varargin首先将它包裹在一个细胞内似乎是错误的.
有没有修复,或者我是否错误地定义了我的回调函数调用?

matlab callback variadic-functions cell-array matlab-gui

0
推荐指数
1
解决办法
481
查看次数