【问题标题】:wxPython panel redraw in windowswxPython面板在windows中重绘
【发布时间】:2011-03-28 10:28:14
【问题描述】:

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

它在 Linux 中运行良好,但是当我在 windows 中尝试相同的源时,第一页还可以,但在第二页及以后,似乎没有应用大小调整器。

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

似乎只有当我最大化窗口时才会应用大小调整器并且布局变得正常。 (同样,在 panel.Destory() 和新的面板生成之后,布局再次混乱。)

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

【问题讨论】:

    标签: python user-interface wxpython


    【解决方案1】:

    在小部件的父级上调用 Layout 是最好的方法是添加或销毁小部件。有时您还需要调用 Refresh() 来使其重绘,尽管这可能仅在您使用 Freeze/Thaw 时才需要。

    【讨论】:

    • 在某些操作系统上可能不需要布局。我知道它在 Windows XP 上是必需的。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我同意这是更好的方法。我知道这一点,但我只有几个小时,没有时间更改代码。所以我只是将 .Layout() 添加到每个页面,但下次我会这样做。谢谢!
      猜你喜欢
      • 2012-06-01
      • 2010-10-08
      • 1970-01-01
      • 2014-11-03
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多