我是一个新手,正在尝试创建一个小的测试程序,其中EVT\u LEFT\u DOWN事件绑定到一个静态位图,如下所示:
wx.EVT_LEFT_DOWN(imageBitmap, image_click_handler)
图像单击处理程序如下所示:
image_click_handler(self):
self.Skip()
while self.LeftIsDown():
Do something
基本上,我尝试在单击图像时实现拖动。然而自左向下()方法从不返回false,这会导致无限循环。你知道吗
我觉得我在做一些非常愚蠢的事情。我一直在关注这里的文档(http://www.wxpython.org/docs/api/wx.MouseEvent-class.html),这是WxPython的旧版本(我使用的是3.0.0.0)。也许这是个问题?你知道吗
wxPython是一个事件驱动的环境。当有人按下鼠标左键时,会调用事件处理程序,在事件处理程序完成之前,不会有其他事件进入您的程序。由于所有新事件都被卡在队列中等待处理程序返回,因此程序无法意识到按钮的释放。一般来说,在事件处理程序中,使用类似于无限循环的任何东西都是危险的。你知道吗
解决方案通常分为几个部分:(1)设置一个计时器来发送周期性事件,但不要启动它。(2) 在init\u click\u处理程序中,启动此计时器并返回。(3) 编写一个计时器事件处理程序,其中每个事件“执行一次操作”。(4) 当您得到一个EVT\u LEFT\u时,您可以停止计时器(另一个事件处理程序),或者您也可以检查计时器事件处理程序中的LeftIsDown(),当它为False时停止计时器。你知道吗
相关问题 更多 >
编程相关推荐