【问题标题】:How to make a dynamic GUI which adjust its size accordingly如何制作相应调整其大小的动态 GUI
【发布时间】:2019-02-02 16:28:49
【问题描述】:

在 MATLAB GUI 中,我希望窗口根据输入的数量变长或变短。输入的数量是可变的,每个输入名称将是一个在另一个之下。我希望它得到最合适的外观。我找不到如何通过代码更改窗口的大小。

输入将如下所示:

inputA
inputB
inputC
inputD
inputE
...

另外,我可以接受通过根据窗口大小调整输入的文本大小来做到这一点。(窗口大小可能是恒定的)

最后,我想学习当单位是字符或像素时如何获取 GUI 窗口的大小。我认为当单位改变时它应该有不同的大小。

提前致谢。

【问题讨论】:

    标签: matlab user-interface


    【解决方案1】:

    创建 GUI 后,您可以使用类似的代码根据项目数调整窗口大小

    pos = get(gcf, 'position');
    set(gcf, 'position', [ pos(1:3) pos(4)*nItems]);
    

    您还可以在窗口中调整 GUI 的大小。假设 h 是您放置文本的容器的句柄,并且它只显示一个项目。您更改了文本,现在想要调整 GUI 的大小并保持图形的大小相同。

    pos = get(h, 'extent');
    set(h, 'extent', [ pos(1:3) pos(4)*nItems]);
    

    【讨论】:

      【解决方案2】:

      您可以通过更改图形窗口的'Position' 属性来设置其大小。前两个值是左下角的 x 和 y 坐标(w.r.t. 屏幕的左下角),后两个值是宽度和高度。可以读取此属性以获取当前位置和大小。例如:

      h = figure; % this is where you create you GUI in
      h.Position(3) = 50; % set the width to 50 pixels.
      

      如果您想使用不同的测量单位,而不是默认像素,请设置'Units' 属性:

      h.Units = 'characters'; % now the position will be given in relation to the size of the font.
      

      其他可能的单位包括'centimeters''inches''points'

      【讨论】:

      • 其实我需要获取GUI窗口的信息。哪个变量有matlab GUI位置信息?
      • @sanmiyom:图形用户界面内置于图形窗口中。 gcf 将返回活动图形窗口的句柄(最后一个显示,或者您最后一次与之交互)。
      • 其实,我还在为这种情况而挣扎。我将在文本按钮上键入输入名称。但是如何根据输入名称调整静态文本框的宽度?我会根据长度最大的inputname来设置所有的静态文本宽度。
      • 您输入了“现在将根据字体大小给出位置”。但它并没有根据它的字体进行调整。
      • @sanmiyom:不,适合您设置字体大小,然后将单位设置为“字符”,然后设置窗口大小。更改字体时,MATLAB 不会调整窗口大小。但是,将单位设置为“字符”时,您可以以字符而不是像素为单位指定大小,因此您的代码与字体大小无关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2012-11-13
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2023-03-20
      相关资源
      最近更新 更多