【问题标题】:Kivy: buttons no longer pressableKivy:按钮不再可按
【发布时间】:2014-09-24 08:25:04
【问题描述】:

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

【问题讨论】:

    标签: python-2.7 kivy


    【解决方案1】:

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

    这是一个普通的python原理,如果你是新的想法,你可以找到很多资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多