EDA365电子论坛网
标题:
《掌握和精通matlab之gui》的疑问请教大神。
[打印本页]
作者:
tobias
时间:
2020-7-17 13:47
标题:
《掌握和精通matlab之gui》的疑问请教大神。
如题:程序如下
, Q1 l, M, F( Y; T
function exm1151_1( )
( ?- j$ j/ P( D/ }& O, o
global hedit hpop hlist
/ }# v7 w2 e% ?' G) y R+ w. A# `4 C, ]3 y
clf reset % <1>
5 _0 N8 V1 a) Q# y' }( L! w) q0 K! j
set(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);%设置图形窗大小
- D8 G; v1 w' H+ \" n" f. k
set(gcf,'defaultuicontrolunits','normalized');
% e9 f& D3 A! }) P5 i. R
set(gcf,'defaultuicontrolfontsize',11);
' t3 @# h: i- n$ V& F
set(gcf,'defaultuicontrolfontname','隶书');
8 N/ |1 K+ N3 @8 `( A- B1 P1 E
set(gcf,'defaultuicontrolhorizontal','left');
" l4 U) R8 e0 K2 w8 B
set(gcf,'menubar','none'); %删除图形窗工具条
/ w% I( f6 X9 l" O, F
str='通过多行指令绘图的交互界面';
7 k: D4 m# T% H
set(gcf,'name',str,'numbertitle','off'); %书写图形窗名
0 [. Q4 b& G+ o& t- o, d* h* A9 V5 O
h_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');%定义轴位框位置
3 W6 o ~' I' E2 u
uicontrol(gcf,'Style','text',... %制作静态文本框
+ B t A; K- R) l8 h4 W
'position',[0.52,0.87,0.26,0.1],...
6 i* r9 |2 ]1 w6 S) n/ z8 j
'String','绘图指令输入框');
9 B( r$ \5 ~/ v- v
hedit=uicontrol(gcf,'Style','edit',... %制作可编辑文本框 <14>
- `+ F: x3 d- G( b
'position',[0.52,0.05,0.26,0.8],...
! a0 P: G, n1 Z# Z- ^& _/ i
'Max',2); %取2,使Max-Min>1,而允许多行输入 <16>
$ W0 k3 O. H3 R
hpop=uicontrol(gcf,'style','popup',... %制作弹出菜单 <17>
. @* ]) ~) t% n- f) J) ?
'position',[0.8,0.73,0.18,0.12],...
. w# O: m G+ u9 O9 C
'string','spring|summer|autumn|winter');%设置弹出框中选项名 <19>
|3 D5 r5 h* p2 x3 \! ~% X
hlist=uicontrol(gcf,'Style','list',... %制作列表框 <20>
% t0 B' `" m# \4 r5 N, \; h
'position',[0.8,0.23,0.18,0.37],...
5 D; b# y% U/ L
'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名 <22>
: [; L3 w- s1 P/ F2 {4 T0 W, R9 B
'Max',2); %取2,使Max-Min>1,而允许多项选择 <23>
: ^6 A" I1 j0 l o9 h- K9 _
hpush=uicontrol(gcf,'Style','push',... %制作与列表框配用的按键 <24>
8 y; w8 E$ U' P+ e7 b2 z& v- J
'position',[0.8,0.05,0.18,0.15],'string','Apply');% <25>
. H% Z. S% @6 s. s5 j& \
set(hedit,'callback','calledit1'); %编辑框输入引起回调 <26>
6 p( ^2 f% I0 I/ W
set(hpop,'callback','calledit1'); %弹出框选择引起回调 <27>
& U3 c! Q0 n& e' x. J3 B% a: `. M# X
set(hpush,'callback','calledit1'); %按键引起的回调 <28>
1 {+ E: H( H( @- r3 A7 o
function calledit1( )
- L) }" v: l, H; d, ^6 f3 E
global hedit hpop hlist
5 T$ j% x }& n2 k$ @7 h
ct=get(hedit,'string'); %获得输入的字符串函数 <2>
/ C+ m. g) {% g& R' a# _8 A
vpop=get(hpop,'value'); %获得选项的位置标识 <3>
, S- v$ {7 ?, I8 }2 u
vlist=get(hlist,'value'); %获得选项位置向量 <4>
$ W/ I7 J. s: k; T5 d
if ~isempty(ct) %可编辑框输入非空时 <5>
8 M& q! k0 t8 ^3 @. r$ s9 `
eval(ct') %运行从编辑文本框送入的指令 <6>
- p1 E! D% x: N1 K: }% ?" ^
popstr={'spring','summer','autumn','winter'}; %弹出框色图矩阵 <7>
# h: W) \$ S( t( h7 j
liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容 <8>
3 E* e! S: `2 o0 w( r: Q( g
invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令 <9>
; p2 D1 v9 Y# a/ r0 x
colormap(eval(popstr{vpop})) %采用弹出框所选色图 <10>
( N5 X! D6 R0 p! E# \9 r/ y1 c) R
vv=zeros(1,4);vv(vlist)=1;
* T# L5 o; c( ~! T5 ]" n
for k=1:4
q" G p7 L, a& J( b! `
if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形
7 Y/ H$ v# f8 o( n) m
end
p! |: g q8 R0 F4 t3 I
end
* h* }" T4 ], ~- L
《掌握和精通matlab之gui》的代码,
6 s2 {% ]. X- A6 G; V" f
可是按照此书上的例子运行出现:Undefined function or variable 'calledit1'. Error while evaluating UIControl Callback
3 X; H9 k# x7 m9 j: h" ~
# Z# _) b% B( l K" q
书上的例子出的图
1.png
(26.09 KB, 下载次数: 9)
下载附件
保存到相册
2020-7-17 13:46 上传
+ N4 J$ k" B+ R. Q) x
请教大神,非常感谢!
, [. l, w7 R {( r' R
2 z4 b+ ^; {" g' G( s
$ r/ q: |9 ^" i; D, \# n$ k4 k
作者:
fanichicl
时间:
2020-7-17 14:41
eval(ct') ,为什么要用单个单引号?eval(ct)或者eval(‘ct’),不可以呢?
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2