【问题标题】:Edit box clearing on mouse click in MATLAB GUI在 MATLAB GUI 中单击鼠标清除编辑框
【发布时间】:2012-01-05 14:55:53
【问题描述】:

我想在 MATLAB GUI 中有一个“编辑”框,上面写着“在此处键入搜索”。 当用户在框内单击时,我希望“在此处键入搜索”消失并为用户提供一个空的编辑框以开始输入...

有什么想法吗?

【问题讨论】:

    标签: matlab user-interface matlab-guide


    【解决方案1】:

    至少在我的系统上,当我使用以下代码设置用户输入框/窗口时

    prompt    = 'Enter search terms:';
    dlg_title = 'My input box';
    num_lines = 1;
    defAns    = {'TYPE_SERACH_HERE'};
    
    answer = inputdlg(prompt, dlg_title, num_lines, defAns);
    

    默认文本 TYPE_SEARCH_HERE 突出显示,因此我可以开始输入以将其替换为我想要的任何内容。

    编辑或者,如果您有一个现有的uicontrol 编辑框,您可以执行以下操作:

    function hedit = drawbox()
    
      hedit = uicontrol('Style', 'edit',...
          'String', 'deafult',...
          'Enable', 'inactive',...
          'Callback', @print_string,...
          'ButtonDownFcn', @clear);
    
    end
    
    function clear(hObj, event) %#ok<INUSD>
    
      set(hObj, 'String', '', 'Enable', 'on');
      uicontrol(hObj); % This activates the edit box and 
                       % places the cursor in the box,
                       % ready for user input.
    
    end
    
    function print_string(hObj, event) %#ok<INUSD>
    
      get(hObj, 'String')
    
    end
    

    【讨论】:

    • 不得不点击两次就无法达到目的。你知道在编辑框中点击时如何突出显示文本吗?
    • 谢谢,但似乎不容易做到。见下方答案
    【解决方案2】:

    克里斯,您必须单击 uicontrol 边框才能使 ButtonDownFcn 发生。如果您在编辑框内点击,则不会发生这种情况

    【讨论】:

      【解决方案3】:

      好的,所以我有一个解决问题的方法,它完美无缺!!

      但是,我很沮丧,因为我完全不知道它为什么会起作用......

      1. 在 GUIDE 中创建一个编辑文本框并右键单击它以打开属性检查器。
      2. 将文本“TYPE TEXT HERE”添加到“字符串”属性
      3. 找到名为“Enable”的属性并将其切换为“inactive”
      4. 创建一个 buttonDownFnc(也可以在属性检查器中完成)
      5. 使用以下代码:

        函数 myEditBoxTagGoesHere_ButtonDownFcn(hObject, eventdata, 句柄)

        % 将“启用”状态切换为 ON

        set(hObject, 'Enable', 'On');

        % 创建 UI 控件

        uicontrol(handles.myEditBoxTagGoesHere);

      如果有人能解释为什么 uicontrol 在鼠标左键单击时突出显示文本,那就太好了!

      【讨论】:

        【解决方案4】:

        Hooplator15,它之所以有效,是因为当 Enable 为 Off 时,编辑文本就像按钮:

        • 如果 Enable == 'on'(编辑文本 Enable),函数 _ButtonDownFcn 在鼠标按下 5 像素边框时执行;

        • 否则,它会在鼠标按下 5 像素边框或编辑文本时执行,就像按钮一样。

        【讨论】:

          猜你喜欢
          • 2010-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-24
          • 1970-01-01
          • 2013-01-13
          相关资源
          最近更新 更多