2015-03-08 48 views
0

我有一个Notebook并为其添加两个面板。当我尝试获得其中一个面板的可用区域时,它会返回(20,20) - 我想这是在放入东西之前它的大小。我想在放入东西之前得到这个大小,因为一些比例取决于对此,我宁愿不使用绝对值。wxPython - GetSize不返回实际大小

我还没有设置实际大小,我只是用boxsizer设置大小并设置比例。我想获得分配给面板的区域的实际像素宽度(它不占用整个程序窗口区域)。我已经尝试GetSize之前调用布局,我已经尝试GetVirtualSize和获取ClientSize和任何其他可用大小返回,仍然(20,20)或有时(10,40)。我已经尝试获得父母的大小,没有去。我得到祖父母大小,它显示正确,但这是整个程序窗口的大小。有没有办法获得面板的潜在可用区域?如果需要,我可以发布布局,但时间很长。

回答

1

这听起来像是在创建窗口时,在初始布局和大小调整完成之前尝试执行此操作,因此所有内容仍具有其初始大小。有一些替代方法来处理这种情况。您可以延迟创建面板的内容,直到第一个尺寸的事件。或者你可以设计你的sizer布局,以适应任何(合理)的尺寸。或者如果需要,您可以稍后调整/重做sizer布局。

或者最简单的方法是将假大小的事件发送给父级或顶级父级,这样他们将执行调整子级窗口大小的正常布局,这将级联到您的面板。这可能不适用于所有情况,但有一个窗口方法很常见,SendSizeEvent