似乎一个事件正在禁用另一个事件。在调用事件B之前,事件A可以正常工作。事件B触发后,事件A不再工作。这两个事件都是人们为wxPython库(FloatCanvas和colorselect)定制的。我想跟踪生成的事件,以确保在事件B之后,事件A仍然被触发(但可能没有触发处理程序代码?)你知道吗
我有一个wxPython应用程序,我在其中创建了一个wx.Panel
对象,其中包含两个子项:一个plot和一个legend。这个顶级面板处理大多数事件。你知道吗
绘图是一个wx.Panel
对象,其中有一个wx.lib.FloatCanvas.FloatCanvas
画布。
图例是一个wx.Panel
,其中包含多个wx.StaticText
和wx.lib.colourselect.ColourSelect
对象(我正在绘制离散数据点)。
在绘图时,我将FloatCanvas.EVT_MOUSEWHEEL
绑定到放大/缩小函数。在图例中,我将wx.lib.colourselect.EVT_COLOURSELECT
事件绑定到update\u colors函数,然后该函数通过wx.PostEvent(event)
将事件发送到父面板。你知道吗
然后,父面板从子面板接收EVT_COLOURSELECT
,并执行更改绘图颜色的代码。你知道吗
我还没来得及编写一个小示例来说明问题所在,但您可以通过运行源代码来了解问题: https://github.com/dougthor42/wafer_map
运行wm_应用程序类型文件,然后执行以下测试步骤。你知道吗
EVT_COLOURSELECT
)。如果使用源代码进行测试,可以通过单击图例颜色框并选择新颜色来完成。你知道吗显然这些都没用,否则我就不在这里了
解除鼠标滚轮事件的绑定,并在顶级面板从子面板接收到事件时重新绑定它。
在父面板和图例中完全禁用EVT_COLOURSELECT
的处理程序。你知道吗
EVT_COLOURSELECT
会导致EVT_MOUSEWHEEL
停止工作。你知道吗将FloatCanvas.EVT_MOUSEWHEEL
更改为其他事件,例如FloatCanvas.EVT_RIGHT_DOWN
有人遇到过事件相互干扰的问题吗?你知道吗
事实证明,没有任何干扰事件-至少没有我提到的事件。你知道吗
在做了大量的修改和尝试之后,我找到了问题的根源。遗憾的是,我没有找到解决办法。你知道吗
问题是:
我的阴谋wx.面板正在绑定
wx.MOUSE_LEFT_DOWN
。看来这阻止了父母wx.框架窗口,使焦点集中到保存绘图和图例的面板。你知道吗解决方案:
我删除了对
wx.EVT_LEFT_DOWN
的绑定,这似乎解决了根本问题。然而,这仍然不是理想的情况,因为它会导致另外两个问题:wx.EVT_LEFT_DOWN
,而是(我相信)源于Windows所做的一些事情。更多信息请参见Focus-follows-mouse in wxPython?。你知道吗失败的解决方法:
我尝试了一种解决方法:添加发送wx.EVT\ u左\下但要么还是不行,要么我做错了。以下是我尝试的左键单击事件处理程序:
不管怎样,这个问题已经解决了。希望我这里的东西能帮助别人。你知道吗
相关问题 更多 >
编程相关推荐