【问题标题】:How to view a more than 1 lines of sentences to uipanel in matlab?如何在matlab中查看超过1行的句子到uipanel?
【发布时间】:2024-01-09 04:42:01
【问题描述】:

我想查看“检测”功能的结果。 在“检测”功能中有“消息”变量。 从函数中,我希望messeges 变量中的所有句子都可以在我的GUI 中预览,尤其是在UIPANEL 中。

怎么做。我在 matlab 中使用 tag=uipanel1 进行了面板设计。

[messeges]=Detection(handles.citra1); %it's to call the Detection     
function.

这是我的 UIPANEL 代码..

       hp1=uipanel('Position', [100 100 700 500],...
       'Title','UI Panel 1');
        set(hp1, [messeges]);

但它无法将messeges变量中的句子显示到我之前制作的panel1中..

有这样的错误消息

        ??? Error using ==> set
        There is no 'jumlah pasang pixel yang pada objek 13         
        adalah 1000' property in the 'uipanel' class.

       Error in ==> deteksi2citra>pushbutton3_Callback at 124
       set(hp1, [messeges]);

       Error in ==> gui_mainfcn at 96
        feval(varargin{:});

        Error in ==> deteksi2citra at 42
          gui_mainfcn(gui_State, varargin{:});

      Error in ==>          
     @(hObject,eventdata)deteksi2citra('pushbutton3_Callback',
    hObject,eventdata,guidata(hObject))


     ??? Error while evaluating uicontrol Callback

我找到了相关主题,但我找不到解决方案。

请帮帮我..

【问题讨论】:

    标签: matlab user-interface panel


    【解决方案1】:

    您的代码存在三个主要问题。

    1. 您总是必须在 Matlab 中将 对象a 属性 设置为 something

      set(Object_Handle,'PropertyName1',PropertyValue1,...
         'PropertyName2',PropertyValue2...)
      

      因此你可能可以写这个set(hp1, 'String', messages);,但永远不能写set(hp1, [messages]);

    2. uipanel 只是一个容器对象,这意味着它可以包含其他 GUI 对象。您可以将包含您的字符串的textedit(参见uicontrol)放在uipanel 中。但是uipanel 本身没有'String' 属性。

    3. uipanelposition 向量 默认为normalized。所以所有的位置值必须在01之间。有关详细信息,请参阅位置矢量 here

    多行 text 放入uipanel 的示例:

    (请注意,此代码是独立的或自一致的代码(与 GUIDE 不同),因此您可以复制并粘贴此代码并在 matlab 命令窗口中运行。)

    str = sprintf('Your \n Multiline \n String ...');
    
    hp1 = uipanel('Title','UI Panel 1',...
        'Position', [.25 .1 .67 .67]);
    
    uicontrol(...
        'Parent', hp1,...
        'Style','text',...
        'Units', 'Normalized', 'Position', [0 0 1 1],...
        'String', str);
    

    【讨论】:

    • 谢谢,它的工作.. 但是如果我的消息不止一行,我从其他函数中处理的变量中调用它,我该怎么做?使用上面的代码,显示的信息只是最后一行信息。
    • 消息必须是格式化的字符串,例如sprintf 的输出。我假设Detection 是用户定义的函数。如果是这样,则必须修改该函数以生成标准输出字符串。您能否提供messages 的示例并将其包含在您的问题中?