wxPython面板在窗口中重绘

时间:2011-03-28 10:28:15

标签: python user-interface wxpython

我正在尝试制作几个不同的页面,我需要显示不同的文本和按钮。 我做的是我创建了一个面板,然后在其上创建了几个sizer,然后在下一页中,我销毁了面板并使用不同的内容/大小调整器重新创建了面板。

它在Linux中运行良好,但是当我在Windows中尝试相同的源时,第一页是可以的,但在第二页及之后,似乎没有应用sizer。

我尝试了各种.Update()和.Refresh(),但似乎没有任何效果。

似乎只有当我最大化窗口时,才会应用sizer并且布局变得正常。 (再次,在panel.Destory()和新的面板生成之后,布局再次搞砸了。)

如何在Windows中制作两个不同的“页面”(我点击一个按钮,然后转到第二页),其中包含不同的内容和大小调整器?

3 个答案:

答案 0 :(得分:3)

在窗口小部件的父级上调用布局是执行此操作的最佳方法,即添加或销毁窗口小部件。有时你还需要调用Refresh()来重绘它,虽然这可能只在你使用Freeze / Thaw时才需要。

答案 1 :(得分:2)

似乎有更好的方法可以做到这一点,但panel.Layout()现在解决了这个问题。 :)

答案 2 :(得分:1)

我同意使用Layout(),但是我可以建议隐藏未使用的面板而不是销毁它吗?使用sizer的Show()/ Hide()函数,你可以并排添加两个并隐藏未使用的面板而不是destryong并每次重新创建它?