按钮未在Kivy App中运行事件

时间:2014-01-19 16:04:45

标签: android python kivy

我为一个简单的Kivy应用程序创建了一个双按钮代码,但是在单击该按钮时,它无法运行方法。

当我点击“签入”按钮时,它会显示 AttributeError:'Button'对象没有属性'login'

这是我的代码。我想在点击按钮上打印一条消息。

from kivy.app import App
from kivy.lang import Builder

button1 = '''
BoxLayout:

    Button:
        text: 'Check In'
        height: "40dp"
        on_press: login()
        size_hint: None, None
        pos_hint: {'center_x': .1, 'center_y': .1}  
        canvas.before:
            PushMatrix
            Rotate:
                angle: 0
                origin: self.center
        canvas.after:
            PopMatrix
    Button:
        text: 'SOS'
        size_hint: None, None
        pos_hint: {'center_x': .1, 'center_y': .1}
        canvas.before:
            PushMatrix
            Rotate:
                angle: 0
                origin: self.center
        canvas.after:
            PopMatrix
'''



class RotationApp(App):

    def build(self):

        return Builder.load_string(button1)
    def login(self):
        print("Click the goddamn button")
RotationApp().run()

1 个答案:

答案 0 :(得分:0)

该按钮没有对登录方法的引用 - 只要它关注的是一些可能来自任何地方的随机名称。

由于登录是您的应用类的一种方法,因此您需要对正在运行的应用程序的引用,幸运的是,kv语言已经提供了app关键字。这意味着您应该将login替换为app.login

您还可以通过App.get_running_app()在纯python中获取对该应用的引用,这实际上是app关键字在幕后的作用。