LeftIsDown不切换

2024-05-19 12:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个新手,正在尝试创建一个小的测试程序,其中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)。也许这是个问题?你知道吗


Tags: 图像imageself处理程序静态事件left测试程序
1条回答
网友
1楼 · 发布于 2024-05-19 12:36:40

wxPython是一个事件驱动的环境。当有人按下鼠标左键时,会调用事件处理程序,在事件处理程序完成之前,不会有其他事件进入您的程序。由于所有新事件都被卡在队列中等待处理程序返回,因此程序无法意识到按钮的释放。一般来说,在事件处理程序中,使用类似于无限循环的任何东西都是危险的。你知道吗

解决方案通常分为几个部分:(1)设置一个计时器来发送周期性事件,但不要启动它。(2) 在init\u click\u处理程序中,启动此计时器并返回。(3) 编写一个计时器事件处理程序,其中每个事件“执行一次操作”。(4) 当您得到一个EVT\u LEFT\u时,您可以停止计时器(另一个事件处理程序),或者您也可以检查计时器事件处理程序中的LeftIsDown(),当它为False时停止计时器。你知道吗

相关问题 更多 >