0

我正在构建一个分为 3 列和 1+ 行的 GUI。行数由用户通过 IntField 决定。

由于每个(显示的)行都将包含绘图,因此我不想将它们从窗口中分离,以避免重新创建它们。所以我想隐藏不应该显示的行,保留已经创建和附加的图。为了做到这一点,我正在考虑容器的可见属性。

不幸的是,就我而言,订阅似乎不适用于可见字段。

这是代码:

enamldef MyMenu(Container):
  attr context
  IntField:
    minimum = 1
    value := context.first_row
  IntField:
    minimum = 1
    value := context.last_row

enamldef MyPanel(Container):
  attr context
  Label:
    text << str(context.last_row - context.first_row)
    # subscription will work and label is updated
  Looper:
    iterable = range(35)
    Container:
      visible << loop_index <= context.last_row - context.first_row
      # visible won't update.
      # Only the init value of last_row and first_row will have an impact
      contraints = [height == 150]
      Label:
        text << str(context.last_sig - context.first_sig)
        # subscription will work and label is updated even in the loop & the container

有人有想法吗?

4

1 回答 1

0

嗯,不知道为什么visible不适合你。它应该是。我现在没有时间调试它。

您可以尝试使用Conditional对象作为容器的父级:

enamldef MyPanel(Container):
  attr context
  Label:
    text << str(context.last_row - context.first_row)
  Looper:
    iterable = range(35)
    Conditional:
      condition << loop_index <= context.last_row - context.first_row
      Container:
        Label:
          text << str(context.last_sig - context.first_sig)
于 2018-09-14T23:07:59.880 回答