【问题标题】:Add a button on a figure and to close the figure in MATLAB在图窗上添加按钮并在 MATLAB 中关闭图窗
【发布时间】:2012-02-23 12:46:12
【问题描述】:

我有一组从数据库中提取的数据。我已经在图形窗口中显示了它们,但我想要一个按钮,它可以在其中关闭图形窗口或对其执行一些其他功能。

这是我到目前为止的代码:

f = figure('Position',[200 200 250 500]); % size of the figure object
dat = listofPdb.Data;
set(f,'name','List of PDBs available','numbertitle','off') %renames the Title Figure
cnames = {'PDB-Codes'};
rnames = {};
t = uitable('Parent',f,'Data',dat,'ColumnName',cnames,... 
            'RowName',rnames,'Position',[100 100 95 350]);

请指教。

【问题讨论】:

    标签: matlab matlab-figure matlab-uitable


    【解决方案1】:

    需要定义图形的CloseRequestFcn属性:

    set(f,'CloseRequestFcn', @closereq)
    

    closereq 是一个函数,当图形关闭时要做什么。

    有关更多信息和示例,请参阅Figure properties


    更新(在 cmets 中聊天后):

    对于按钮,您可以定义回调函数来关闭图形(将close(get(hObject,'Parent')) 插入pushbutton1_Callback),其余的由 CloseRequestFcn 完成。

    另一方面,如果您希望按钮在关闭图窗之前执行某些操作,但不想通过标准关闭执行此操作,则只需将这些操作插入按钮回调,而不是 CloseRequestFcn

    【讨论】:

    • 表示输入参数过多。我基本上已经从您发布的链接中给出的示例中复制了代码,并将其相应地称为“closereq”。但是我如何将这段代码包裹在一个按钮周围?
    • 只需添加代码以关闭图形到按钮回调函数。该图将在实际关闭之前运行CloseRequestFcn
    • 这里有一行可以插入pushbutton1_Callback函数来关闭图形:close(get(hObject,'Parent'))
    • 另一方面,如果您希望按钮在关闭图形之前执行某些操作,但又不想在标准关闭时执行此操作,那么只需将这些操作放在按钮回调中,而不是 @ 987654331@.
    • 你可以做到,但你会遇到变量范围的问题。该脚本将在回调函数范围内运行,并且无法访问 MATLAB 基础工作区中的变量。您可以使用handles 参数传递您需要的变量,或者您可以使用evalin 调用脚本,或者(最糟糕的)定义全局变量。这实际上是一个大问题,值得一个单独的问题。尝试谷歌或搜索其他类似的问题。
    【解决方案2】:

    输入guide 并设计你的身材。比在它上面放一个按钮,右键单击->关闭功能。并定义您想要关闭图形的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多