我将on_motion
设置为处理EVT_MOTION
。我希望鼠标位置的交互式生成一个坐标特定的图像,但WxPython有一个~400 has 延迟注册连续的运动事件。这使得界面变得呆滞。
为什么EVT_MOTION
速度这么慢,我该如何修复它?我在Ubuntu11.10和WinXP上试过了,而延迟是可以比较的吗?
我需要快速的响应时间,以选择一部分从图片显示的图像。目前,“交叉毛”跟随鼠标的速度太慢了。
下面是我尝试过的EVT_MOTION
代码
def on_motion(self, event):
"""mouse in motion"""
#pt = event.GetPosition()
self.mouseover_location = event.GetPosition()
self.t2 = time.time()
print "delay",self.t2 - self.t1
self.t1 = self.t2
delay 0.379776954651
delay 0.00115919113159
delay 0.421130895615
delay 0.416938066483
delay 0.376848936081
delay 0.387464046478
delay 0.40311384201
delay 0.392899036407
delay 0.385301113129
delay 0.422554969788
delay 0.355197906494
发布于 2012-06-08 10:40:10
目前的问题是不完整的,因为没有示例应用程序来演示这个问题。但是,我要说的是,运动处理程序与您的问题无关,因为很可能您正在后续的运动处理程序之间执行一些昂贵的操作(比如刷新整个绘图画布)。
如果是这样的话(您可以很容易地检查您的画图例程是否在鼠标运动事件之间调用),我建议如下:
如果您的绘图是自己绘制的,请确保您使用的是双缓冲(通过wx.BufferedPaintDC);
发布于 2012-06-06 11:10:12
每次鼠标被移动时,EVT_MOTION
都会被触发!如果您然后对每个移动调用event.GetPosition()
并处理数据,这将降低性能。如何使用EVT_LEFT_DOWN
或类似的东西,然后获取位置和处理数据。这将是更有效的,因为你只是在寻找某一区域的图像。
发布于 2012-06-08 10:36:17
我们确实需要了解应用程序中还发生了什么,才能给出任何有意义的答案,尽管许多人在创建一个演示问题的小示例以与其他人共享问题的过程中能够自己解决问题。
http://wiki.wxpython.org/MakingSampleApps
优化你是如何画交叉和/或你如何刷新窗口的主要内容可能是你最好的选择,但除非你分享更多的细节,我们所能做的只是猜测。
https://stackoverflow.com/questions/10849294
复制