【问题标题】:Set compiled matlab GUI folder设置编译后的matlab GUI文件夹
【发布时间】:2017-08-03 23:44:59
【问题描述】:

我有一个 Matlab GUI(我编译它),为了加载一个文件,我按下一个使用此行的按钮

[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files'},' Select image');

如果我再次按下按钮,它将打开安装软件的文件夹。如何更改它以使其记住并打开我上次使用的文件夹?

谢谢。

【问题讨论】:

    标签: matlab directory matlab-guide


    【解决方案1】:

    根据uigetfile 的文档,您可以指定可选的第三个输入参数DefaultName

    [FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName) 显示一个对话框 其中DefaultName指定的文件名出现在文件中 名称字段。 DefaultName 也可以是路径或路径/文件名。在 在这种情况下,uigetfile 在指定的文件夹中打开对话框 路径。您可以在DefaultName 中使用...\/ 争论。要指定文件夹名称,请将 DefaultName \/。如果指定的路径不存在, uigetfile 在当前文件夹中打开对话框。

    您可以将上次打开的文件夹存储到您的 GUI 中,并在触发按钮回调时访问它。

    例如:

    function testgui
    h.f = figure('MenuBar', 'none', 'NumberTitle', 'off', 'ToolBar', 'none');
    h.b = uicontrol('Parent', h.f, 'Style', 'pushbutton', 'Units', 'Normalized', ...
                    'Position', [0.1 0.3 0.8 0.4], 'String', 'Pick a file');
    h.l = uicontrol('Parent', h.f, 'Style', 'text', 'Units', 'Normalized', ...
                    'Position', [0.1 0.1 0.8 0.1], 'String', '');
    setappdata(h.f, 'lastfolder', '');
    h.l.String = sprintf('Last Directory: %s', '');
    
    h.b.Callback = @(o, e) abutton(h);
    end
    
    function abutton(h)
    lastfolder = getappdata(h.f, 'lastfolder');
    [file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files'},' Select image', lastfolder);
    
    if folder ~= 0
        setappdata(h.f, 'lastfolder', folder);
        h.l.String = sprintf('Last Directory: %s', folder);
    end    
    end
    

    请注意,当 GUI 关闭并重新打开时,此方法会重置为您的当前目录。

    【讨论】:

    • 感谢它运行良好且运行良好。如何将函数 testgui 内容添加到我的 OpeningFcn?
    • 您的OpeningFcn 中只需要setappdata
    • 我收到此错误:未定义的变量“h”或类“h.f”。 V1ba>V1ba_OpeningFcn 中的错误(第 75 行) setappdata(h.f, 'lastfolder', ''); gui_mainfcn 错误(第 220 行) feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:}); V1ba 中的错误(第 42 行)gui_mainfcn(gui_State, varargin{:});我修复了什么外壳?
    • handles 结构中使用正确的 GUI 窗口句柄。
    • 我使用的是 GUIDE 而不是程序化 UI。因此,我找不到关于应该在 OpenFcn 中替换 setappdata(h.f, 'lastfolder', '') 中的 h.f 的信息?
    【解决方案2】:

    uigetfilefolder 输出是选择的路径。将此用作下一次调用uigetfile的输入

    [file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files';},...
                'Select Image', folder);
    

    这是来自doc uiputfile 的示例,但它也适用于uigetfile

    【讨论】:

    • @user2916044 如果您希望它在运行 GUI 的会话之间记住,那么您需要 save 它。当 GUI 打开时,load 它。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    相关资源
    最近更新 更多