在matlab的GUI中的listbox如何添加选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在matlab的GUI中的listbox如何添加选项相关的知识,希望对你有一定的参考价值。

在matlab的GUI中的listbox如何添加选项,就是程序运行后在列表框中就会有几个选项;再者如何将列表框中的选定项目比如600,取出来赋值给一个变量,在将其转换为数值。给的程序最好加点注释,先谢谢大家了!

1 在你的面板上画好一个listbox
2 右键listbox 看property Inspector
‘string’ 后面有个长得像写字板的图标,左键点它,跳出个对话框,在里面写你的选项就行了,一行代表一个选项,可以写汉字,字母,数字 写什么都行。切记!这里面写的数不是你最后想调用的数,举个例子,当你运行程序后,你鼠标选了第3行选项,系统会返回’3‘这个值,选第几个选项就返回数字几。
‘Tag’ 可以在后面的框里写你给这个listbox起的名字,不写就默认为list1,2,3...,建议你给它起个新名字,不然面板控制钮一多,自己都弄混了;
3 这个时候可以看你的m函数了,右键LISTBOX看callback。进入程序里你会看见
function listbox1_Callback(hObject, eventdata, handles)
上面 listbox1就是你的选项框的名字
用A= get(handles.listbox1,'value'); 语句来把选项框的值赋给A
%下面的举个栗子,对你有用
A= get(handles.listbox1,'value'); %A的值代表我们选的是第几个选项
switch A
case 1 % 当我们选的是1 时,给变量B赋个什么样的值,依次类推,最后B将是你想要的结果
B=100;
case 2
B=200;
case 3
B=300;
case 1
B=100;
case 4
B=400;
end

累死我啦 希望对你有用追问

那么咋么获得程序运行后edit中手动输入的值呢

追答

用A = str2num(get(handles.edit框名字,'string'));把框里写的数赋给A

追问

eda是我赋给的值

追答

千万别用错按钮啊,想人工往里面写数要用EDIT框。你人为写在框里的数字,MATLAB会认为是个字符串,然后用A = str2num(get(handles.edit框名字,'string'));把字符串读成个数字赋给A.

你给的那段报错中根本就没有赋值语句,matlab当然不知道EDA是几啦。
千万记得,如果你要用pushbutton当执行按钮,就把上面那个赋值语句写在pushbutton的callback函数下;或者,如果你习惯在edit的callback函数下写赋值语句,就一定要把你那个函数EDA定义成全局变量。要不然、、、你自己也看到结果啦,别人当你的EDA没定义啊

参考技术A 编程的基本思想:
目的->当点击按钮A时, 然后执行任务C,
则->进入按钮A的回调函数callback里,写下任务C的代码。
-------------------------------------------------------------------------------------------------------------------
a:不知道callback在哪??右键单击按钮,view callbacks->选择callback)别的控件也一样。
a:不同的回调函数啥意思??
callBack
最常用的就是它。如果控件是按钮,那点击按钮时,则按钮下的Callback就会执行;如果是滑块,则拖动滑块时,滑块名下的callback就会执行;总之,就是对控件默认操作时,matlab后台就会自动调用它名下的的callback。正常用途,全放在callback下就够了。如果其他的,实在是想知道,了解一下也未尝不可。
ButtonDownFcn
就是鼠标在它(代指各种控件)上面点击一下,你放在这个函数名下的代码就会执行。(ps:按钮的callback也是点击,所以会覆盖掉这个buttondownfcn。)
CreateFcn
顾名思义,在生成这个控件,显示之前,执行你放在这个函数名下的代码;
DeleteFcn
一样。在控件要销毁,但是被毁灭之前执行这个函数名下的代码。貌似“真的要退出吗”这一类就是写在这里。
KeyPressFcn
当前控件获得焦点且有按键按下时执行。(什么是焦点?就是这个控件被鼠标点了(或者是tab轮选到了)。你打开一个记事本,然后再点这个网页,再随便按几个按键,记事本上有字不?没有对吧。因为它没获得焦点,所以你的按键它不会反应的。只有你最后再点它一下,再按几个按键,结果怎么样?有字了吧?)这里的KeyPressFcn也是一样的道理。
一般在这下面的代码还会判断下按键是什么,然后执行相应的代码。
ResizeFcn,SelectionChangeFcn 不常用。也懒得去看了。附几句,控件都有Resize的属性,好像默认是不可调整,如果要用到这个函数,去把它打开先。
SelectionChangeFcn
是在群按钮 组件中,改变选择时,所执行的函数。
参考技术B m=10;%行数
n=15;%列数
A=zeros(m,n); %生成全零矩阵
b=randi(m,[1 n]); %生成n个从1到m的随机整数
ind=sub2ind([m,n],b,1:n);%形成位置
A(ind)=1;%将对应位置变为1

在MATLAB中的GUIDE中打开它之前和之后GUI元素位置的差异

【中文标题】在MATLAB中的GUIDE中打开它之前和之后GUI元素位置的差异【英文标题】:Difference between position of elements of GUI before and after open it in GUIDE in MATLAB 【发布时间】:2014-08-03 14:16:55 【问题描述】:

我正在用 GUIDE 设计一个 GUI。当我在 GUIDE 中打开一个窗口然后运行它时,面板、单选按钮等元素的位置与我运行 MATLAB 并直接从.m file 运行 GUI 时不同。这是一个令人困惑的问题,因为真正的位置是我从.m file 运行。

与直接运行它相比,窗口的所有元素都向右接近 1 厘米,我在这两者之间有一点垂直差异。我应该设计一个窗口,然后关闭 MATLAB 并直接运行它以查看真实位置!如果我在使用 GUIDE 后直接从.m file 打开它,那么从 GUIDE 运行和从 .m file 运行没有任何区别。我必须重新启动 MATLAB 才能看到差异。

你对这个问题有什么想法?我该如何解决?

【问题讨论】:

【参考方案1】:

想法 1

这更像是一种解决方法而不是解决方案:

在 GUIDE 中定位所有元素后,您可以做的是使用菜单栏选项 @ 将图形导出到 .m 文件(实际上不需要 .fig 来获得交互式图形) 987654323@ 在指南中。

这样您将获得一个.m 文件,其中所有元素的位置都硬编码。如果您更改该文件中的位置值,则绝对没有机会它们会出现在其他地方。

想法 2

尝试将 GUI 的 Resize behavior 设置为 Non-resizable。这可以通过Tools > GUI Options...从 GUIDE 菜单访问

【讨论】:

感谢您的回答,但没有解决问题。我检查了您的第一个想法并创建了一个 .m 文件。在 GUIDE 中一切都很好,但是当我运行 .m 文件时,所有元素都比正常位置右 1 厘米。在这种情况下,当我重新运行 MATLAB 时并没有什么不同。 GUIDE 中的好位置和从.m 文件运行的坏位置。我认为 GUIDE 中存在错误。 能否在 GUIDE 中添加您的界面截图?我怀疑您的问题与边距大小有关。顺便说一句,你为什么不能只选择所有内容并将其向左移动 1 厘米? 是的。我现在正在我的作品中这样做,但我正在寻找任何解决方案。重新运行 MATLAB 以查看更改位置的效果有点困难。我在每个窗口都有不同的情况和位置变化。我添加了一个屏幕截图。

以上是关于在matlab的GUI中的listbox如何添加选项的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 下GUI的学习

关于matlab GUI 的一些总结

winform中的listbox怎样添加双击事件

在MATLAB中的GUIDE中打开它之前和之后GUI元素位置的差异

winform中的listbox怎样添加双击事件

matlab GUI-如何给GUI中添加提示框