鞋子:Element.width返回0

时间:2009-08-18 11:35:51

标签: ruby shoes

我不明白为什么如果为非零宽度元素返回0,则对所有元素实现width函数。以下为我返回0。

Shoes.app do
  p = para "My width is: "
  para p.width
end

为什么? (app.width不返回0)

1 个答案:

答案 0 :(得分:0)

问题是para对象的大小是在绘制时动态确定的。在创建第二个para时,实际上还没有布局,因此尚未设置宽度。您可以看到在绘制后访问宽度按预期工作:

Shoes.app do
  p = para "My width is: "
  @para = para p.width
  button 'Get Width' do
    @para.text = p.width
  end
end

解决这个问题的方法是使用start方法,该方法在第一次绘制包含槽时调用:

Shoes.app do
  p = para "My width is: "
  width = para p.width
  start do
    width.text = p.width
  end
end