【问题标题】:Matlab gui error messageMatlab 图形界面错误信息
【发布时间】:2017-07-26 13:05:27
【问题描述】:

我正在 MATLAB 中制作一个 GUI,它将接受来自用户的数字输入并相应地使用它们进行计算。每当用户输入字母而不是数字时,我希望能够创建一个错误对话框。到目前为止,我有这段代码可以显示错误消息:

ed = errordlg('Please enter numbers only','Error'); set(ed, 'WindowStyle', 'modal');uiwait(ed);

这是主要代码的一部分,我想将错误消息集成到:

function roofspace_Callback(hObject, eventdata, handles)
aSpace = str2double(get(hObject,'String')); %This is the user entered value for the roofspace.
set(hObject,'UserData',aSpace);

if aSpace==0 %If aSpace does not have anything then nothing is enabled.
   set(findall(handles.uipanelFunds, '-property', 'enable'), 'enable', 'off');
   set(findall(handles.uipanelPanels, '-property', 'enable'), 'enable', 'off');
   set(findall(handles.uipanelUsage, '-property', 'enable'), 'enable', 'off');
   set(handles.calculate,'enable','off');
   set(hObject,'String','');
else %If aSpace hs a value then this enables the rest of the inputs.
   set(findall(handles.uipanelFunds, '-property', 'enable'), 'enable', 'on');
   set(findall(handles.uipanelPanels, '-property', 'enable'), 'enable', 'on');
   set(findall(handles.uipanelUsage, '-property', 'enable'), 'enable', 'on');
   set(handles.calculate,'enable','on');
      
end

编辑: 总之,我需要弄清楚如何将我的错误消息代码集成到这部分代码中,以便它检查用户是否输入了数字,否则我希望显示错误消息。目前,无论用户输入什么,代码都会显示错误消息。

【问题讨论】:

  • 对……什么的一些见解?你有什么问题?
  • @excaza,当用户给出非数字输入时,如何让此代码显示错误消息?就目前而言,无论输入什么,都会显示错误消息。我不知道如何将错误信息代码集成到程序中来完成这个
  • 似乎您更关心如何检查用户输入是否为数字,而不是在嵌套 if 循环的位置之后。 (如果确实是您的代码,我相信您知道将 if 语句放在哪里......)。
  • @BillBokeey,你说得对,我将问题编辑得更清楚。

标签: matlab loops user-interface if-statement editbox


【解决方案1】:

您可以如下检查:

我将aSpace = str2double(get(hObject,'String')); 拆分为两个语句(只是因为它更容易解释):

str = get(hObject,'String');
aSpace = str2double(str);

我能想到两种错误情况:

  1. 输入的字符串不是数字。
    示例:str = 'abc'.
    aSpace = NaN
    值也可能是 Inf 或 -Inf。
  2. 字符串是复数。
    示例:str = '2 + 3i'.
    aSpace = 2.0000 + 3.0000i

使用以下if 语句检查aSpace 是否不是NaN、Inf、-Inf 和不是复数:

is_ok = isfinite(aSpace) && isreal(aSpace);

if (~is_ok)
    %Handle error...
end

【讨论】:

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