首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制重绘wxPython窗口,wxmpl绘图

强制重绘wxPython窗口,wxmpl绘图
EN

Stack Overflow用户
提问于 2011-06-24 01:52:44
回答 4查看 4.2K关注 0票数 7

刷新wxPython窗口时遇到问题。它目前正在使用wxmpl绘制图形,可以缩放、平移等。有时用户可能会绘制大量数据并放大一小部分,这可能会导致它“冻结”。我的意思是绘图本身不会更新,轴标签是一个接一个地绘制。它正在修改绘图,只是没有正确显示更新的信息。如果调整窗口大小,则会正确地重新绘制绘图。

我花了大量的时间来挖掘wx、wxmpl和matplotlib的源代码和文档……我想出的最佳解决方案是调整窗口大小以强制重新绘制(从而正确显示更新后的绘图)。

代码语言:javascript
复制
# 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做了什么来重绘窗口,并直接调用它。或者,有没有我在什么地方遗漏的其他方法?

EN

回答 4

Stack Overflow用户

发布于 2012-06-01 03:00:22

panel.Layout()命令是一个很好的选择,因为它与调整窗口大小时所调用的方法完全相同。我在刷新和更新方法方面也遇到了问题。当这两个失败时,布局似乎可以工作。

票数 3
EN

Stack Overflow用户

发布于 2011-07-06 17:11:27

如果你不能把它放在别的地方,你可以试试

代码语言:javascript
复制
wx.Yield()

而不是RefreshUpdate

票数 1
EN

Stack Overflow用户

发布于 2012-06-12 21:36:38

我还会尝试在PlotPanel上显示(False),然后再显示(True)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6458451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档