Kivy:纽扣不再可压了

时间:2014-09-24 00:21:50

标签: python-2.7 kivy

在下面的代码中,如果我删除根小部件中的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()

1 个答案:

答案 0 :(得分:1)

您需要添加super(RootWidget, self).on_touch_down(touch)来调用方法的正常版本,该版本处理窗口小部件的正常触摸行为。实际上,您已使用自己的方法替换正常的触摸处理代码。

这是一个普通的python原则,如果这个想法对你来说很新,你可以在上面找到很多资源。