我想在Matlab的GUI中显示当前时间,我想使用此link中的教程(GUI_17)来制作手表(或类似的手表)。代码如下:
function [] = GUI_17()
% Demonstrate how to have a running clock in a GUI, and timer use.
% Creates a small little GUI which displays the correct time and is updated
% every minute according to the system clock.
%
% Author: Matt Fig
% Date: 1/15/2010
S.fh = figure('units','pixels',...
'position',[300 300 180 50],...
'menubar','none',...
'name','GUI_17',...
'numbertitle','off',...
'resize','off');
S.tx = uicontrol('style','text',...
'unit','pix',...
'position',[35 10 110 30],...
'string',datestr(now,16),...
'backgroundc',get(S.fh,'color'),...
'fontsize',18,...
'fontweight','bold',...
'foregroundcolor',[.9 .1 .1]);
STRT = 60 - str2double(datestr(now,'ss')); % So we can update every minute.
tmr = timer('Name','Reminder',...
'Period',60,... % Update the time every 60 seconds.
'StartDelay',STRT,... % In seconds.
'TasksToExecute',inf,... % number of times to update
'ExecutionMode','fixedSpacing',...
'TimerFcn',{@updater});
start(tmr); % Start the timer object.
set(S.fh,'deletefcn',{@deleter}) % Kill timer if fig is closed.
function [] = updater(varargin)
% timerfcn for the timer. If figure is deleted, so is timer.
% I use a try-catch here because timers are finicky in my
% experience.
try
set(S.tx,'string',datestr(now,16))
if ~str2double(datestr(now,'MM'))
X = load('gong'); % At the hour, sound a gong.
sound(X.y,X.Fs*2.5)
end
clear X
catch
delete(S.fh) % Close it all down.
end
end
function [] = deleter(varargin)
% If figure is deleted, so is timer.
stop(tmr);
delete(tmr);
end
end
我使用GUIDE创建了自己的GUI,并创建了一个空的axis1,我想将其用作原始时钟功能中图形定义的替代物。我从链接复制了整个功能,并将其添加到我的GUIDE程序的底部。这是我尝试替换函数的图形句柄:
% S.fh = figure('units','pixels',...
% 'position',[300 300 180 50],...
% 'menubar','none',...
% 'name','GUI_17',...
% 'numbertitle','off',...
% 'resize','off');
通过以下方式:
S.fh=handles.axes1;
但是它在框架中没有显示任何输出,正确的方法是什么?
谢谢
答案 0 :(得分:1)
如果您想使用GUIDE
工具完全复制教程的GUI,首先必须注意,在tutoirial中,时钟是使用text
uicontrol创建的,因此很明显为什么要在GUI中插入axes
。
也。 GUI“窗口”(figure
)是由GUIDE自动创建的,因此不需要添加斧头轴,除非您要手动创建小时,分钟等“指针”时钟,但是,在这种情况下,GUI会变得更加复杂。
使用GUIDE
,您只需添加一个text uicontrol
,然后,如果您想在本教程中精确复制时钟的形状,则可以设置{{1 }}和figure
的uicontrol通过text
。
创建了GUI后,您可以将本教程中的功能插入其Property Inspector
文件中,以使其正常工作,如下所示:
.m
中插入用于创建计时器及其初始化的代码OpeningFcn
在handles
之间共享变量figure uicontrols
和updater
函数的附加输入参数然后,您只需复制并粘贴deleter
和updater
函数,deleter
单元数组的第三个元素将是您在其中设置的图形的句柄结构, {1}} varargin
数据。
关于本教程中的代码,您必须在OpeningFcn
函数中添加以下行:
timer
检索updater
uicontrol的句柄。
使用GUIDE创建的整个GUI看起来像folloes(代码中的注释应突出显示上述相关修改):
fig_handles=varargin{3}