在下面的代码中,如果我删除根小部件中的on_touch_down函数,则按钮是可按下的,但是当我添加on_touch_down函数时,无法再按下按钮。我该如何修复它,所以我不需要删除on_touch_down函数来使按钮可以按下?
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
class MenuScreen(BoxLayout):
def __init__(self,**kwargs):
super(MenuScreen,self).__init__(**kwargs)
self.add_widget(Button(
text="Button1"))
self.add_widget(Button(
text="Button2"))
self.add_widget(Button(
text="Button3"))
self.add_widget(Button(
text="Button4"))
self.add_widget(Button(
text="Button5"))
class RootWidget(FloatLayout):
def __init__(self,**kwargs):
super(RootWidget,self).__init__(**kwargs)
self.show_menu()
def show_menu(self):
self.add_widget(MenuScreen(
size_hint=(0.5,0.8),
pos_hint={'center_x':0.5,'center_y':0.5},
orientation="vertical"))
self.menuscreen=self.children[0]
def on_touch_down(self,touch):
if self.menuscreen.collide_point(touch.x,touch.y)!=True:
self.remove_widget(self.menuscreen)
class MyApp(App):
def build(self):
app=RootWidget()
return app
if __name__=="__main__":
MyApp().run()
答案 0 :(得分:1)
您需要添加super(RootWidget, self).on_touch_down(touch)
来调用方法的正常版本,该版本处理窗口小部件的正常触摸行为。实际上,您已使用自己的方法替换正常的触摸处理代码。
这是一个普通的python原则,如果这个想法对你来说很新,你可以在上面找到很多资源。