不确定释放按钮时为什么会触发on_touch_up。其他两个事件,on_touch_down和on_touch_move都没有被触发。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
class MyPaintWidget(Widget):
def on_touch_down(self, touch):
print "on_touch_down"
def on_touch_move(self, touch):
print "on_touch_move"
def on_touch_up(self, touch):
print "on_touch_up"
class MyPaintApp(App):
def build(self):
parent = Widget()
painter = MyPaintWidget()
btn = Button(text='Click Me')
parent.add_widget(painter)
parent.add_widget(btn)
return parent
if __name__ == '__main__':
MyPaintApp().run()
答案 0 :(得分:3)
你已经重载了MyPainterWidget的向上,向下和移动方法,并且在点击小部件时按照定义执行。
uix.Button没有on_touch_up方法,因此事件沿窗口小部件树向上传播。您可以通过更改
的顺序进一步调查此问题parent.add_widget(painter)
parent.add_widget(btn)
到
parent.add_widget(btn)
parent.add_widget(painter)
我们现在看到“on_touch_up”和“on_touch_down”都打印到控制台,即使单击uix.Button,而不仅仅是“on_touch_up”。
这些是kivy如何处理事件的方面,the details of which can be found here