我试图在窗口小部件上添加一个按钮并将该按钮绑定到一个函数。与此同时,我正在运行on_touch_down
事件。
然而,当我按下按钮时,它不会调用该功能;相反,它会调用on_touch_down
事件。
我该如何解决这个问题?
import kivy
kivy.require('1.0.8')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
class a(Widget):
def on_touch_down(self, touch):
print("touch x is ", touch.x)
print("touch y is ", touch.y)
def update(self,dt):
print("updated")
class mainApp(App):
def build(self):
print("Hi, I am build function")
parent = a()
self.Startbtn = Button(text='Start')
parent.add_widget(self.Startbtn)
self.Startbtn.bind(on_release=self.Loop1)
#Clock.schedule_interval(parent.update, 10.0/1000 )
return parent
def Loop1(self,dt):
print("Hi, this is Loop function")
self.v=1
if __name__ == '__main__':
mainApp().run()
答案 0 :(得分:4)
试试这个:
class a(Widget):
def on_touch_down(self, touch):
print "touch x is ",touch.x
print "touch y is ",touch.y
# add this line:
super(a, self).on_touch_down(touch)
on_touch ...方法首先在触摸事件链中执行,覆盖它,你打破这个链,所以只需添加super()继续。希望它有所帮助。
编辑: 事实证明,你可以只用返回True 来继续关注事件树,而不是super()