Windows 中的 wxPython 面板重绘

发布于 2024-10-27 04:05:15 字数 381 浏览 3 评论 0原文

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

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

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

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

如何制作具有不同内容的两个不同的“页面”(我单击按钮,它会转到第二页) Windows 中的大小调整器?

I am trying to make several different pages where I need to show different texts and buttons.
What I did was I created a panel, and then several sizers on it, and then in the next page, I destroyed the panel and recreated the panel again with different contents/sizers.

It worked well in Linux, but when I tried the same source in the windows, the first page was okay, but in the second page and onward, it seems the sizers were not applied.

I tried various .Update() and .Refresh(), but nothing seems working.

It seems only when I maximize the window the sizers get applied and the layout becomes normal.
(Again, after panel.Destory() and a new panel generation, the layouts are messed up again.)

How do I make two different "pages" (where I click on a button and it goes to the second page) with different contents and sizers in Windows?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

轮廓§ 2024-11-03 04:05:15

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

Calling Layout on the widget's parent is the best way to do this is you are adding or destroying widgets. Sometimes you also need to call Refresh() to make it redraw too, although that might only be required when you're using Freeze/Thaw.

北方。的韩爷 2024-11-03 04:05:15

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

It seems there are better ways to do this, but panel.Layout() solved the problem for now. :)

小苏打饼 2024-11-03 04:05:15

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

I agree with using Layout(), but might I suggest just hiding the unused panel instead of destroying it? Using the Show()/Hide() functions of the sizer, you can add both side-by-side and just hide the unused panel instead of destryong it and recreating it each time?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文