kivy_garden.contextmenu:如何防止其触摸事件到达其他小部件?

时间:2021-01-18 17:19:22

标签: events kivy contextmenu

努力学习 Kivy。

我正在使用 kivy_garden.contextmenu,当我右键单击一个小部件时会打开它。 这有效。 但是,当单击上下文菜单中的 un 元素时,无论如何我都会在下面的小部件上收到 on_touch_xxx 事件(这里是 myWidget)。

我的第一个想法是我可以使用标志来避免这种行为,例如当我显示菜单时,将值 menu_is_showing 设置为 True,如果显示菜单,则忽略下面的小部件的 on_touch_up。我做到了,它几乎可以正常工作(从未通知菜单已通过在菜单外部单击而关闭,因此在这种情况下标志系统会中断)...

然后我意识到(在写这篇文章时)我可以为上下文菜单“可见”创建一个属性,这使得它可以像我期望的上下文菜单一样工作。 这是工作代码(欢迎您评论/更正):

Employee

尝试在蓝色区域中左右单击并检查控制台输出。 (布局中的左侧按钮仅用于添加偏移量并确保我在蓝色区域中所做的事情不会仅仅因为它在 (0,0) 中而偶然对齐)

这很好,但我原以为上下文菜单已经可以做到这一点,并且默认情况下不会将触摸事件传播到其他小部件。有没有办法做到这一点? 如果是这样,你能不能告诉我你会怎么做?

感谢您的时间。

0 个答案:

没有答案