你如何强制刷新 wx.Panel?

新手上路,请多包涵

我正在尝试修改面板的控件,让它更新,然后继续执行代码。问题似乎是面板在刷新自身之前正在等待空闲。我当然尝试过刷新以及 GetSizer().Layout(),甚至使用 SendSizeEvent() 方法向框架发送了一个调整大小事件,但无济于事。我在这里不知所措,我很难相信没有办法强制重绘这个面板。这是更改控件的代码:

 def HideButtons(self):
        self.newButton.Show(False)
        self.openButton.Show(False)
        self.exitButton.Show(False)
        self.buttonSizer.Detach(self.newButton)
        self.buttonSizer.Detach(self.openButton)
        self.buttonSizer.Detach(self.exitButton)
        loadingLabel = wx.StaticText(self.splashImage, wx.ID_ANY, "Loading...", style=wx.ALIGN_LEFT)
        loadingLabel.SetBackgroundColour(wx.WHITE)
        self.buttonSizer.Add(loadingLabel)
        self.GetSizer().Layout()
        self.splashImage.Refresh()

有没有其他人遇到过这样的事情?如果是这样,您是如何解决的?

原文由 Fry 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 778
2 个回答

您需要调用 Update 方法。

原文由 Toni Ruža 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有一个 StaticBitmap 同样,它不会通过任何这些技术进行更新(包括接受的答案中建议的 Update )。

我发现在 --- 上调用 .Hide().Show() Panel 刷新图像。我怀疑如果我针对像 StaticBitmap 这样的低级对象运行这些函数,情况也会如此。

原文由 claytond 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题