刷新wxPython窗口时遇到问题。它目前正在使用wxmpl绘制图形,可以缩放、平移等。有时用户可能会绘制大量数据并放大一小部分,这可能会导致它“冻结”。我的意思是绘图本身不会更新,轴标签是一个接一个地绘制。它正在修改绘图,只是没有正确显示更新的信息。如果调整窗口大小,则会正确地重新绘制绘图。
我花了大量的时间来挖掘wx、wxmpl和matplotlib的源代码和文档……我想出的最佳解决方案是调整窗口大小以强制重新绘制(从而正确显示更新后的绘图)。
# All of these fail - displays the same, incorrect plot
# (view is a wxmpl.PlotPanel object, which inherits from wx.Window among other things)
view.Refresh()
view.Update()
view.draw()
# This works, but is clearly less than ideal
view.SetSize((view.GetSize().width, view.GetSize().height+1))
view.SetSize((view.GetSize().width, view.GetSize().height-1))一定有更好的方法-我真正想知道的是wx.Window.SetSize做了什么来重绘窗口,并直接调用它。或者,有没有我在什么地方遗漏的其他方法?
发布于 2012-06-01 03:00:22
panel.Layout()命令是一个很好的选择,因为它与调整窗口大小时所调用的方法完全相同。我在刷新和更新方法方面也遇到了问题。当这两个失败时,布局似乎可以工作。
发布于 2011-07-06 17:11:27
如果你不能把它放在别的地方,你可以试试
wx.Yield()而不是Refresh或Update。
发布于 2012-06-12 21:36:38
我还会尝试在PlotPanel上显示(False),然后再显示(True)。
https://stackoverflow.com/questions/6458451
复制相似问题