我为一个简单的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()
答案 0 :(得分:0)
该按钮没有对登录方法的引用 - 只要它关注的是一些可能来自任何地方的随机名称。
由于登录是您的应用类的一种方法,因此您需要对正在运行的应用程序的引用,幸运的是,kv语言已经提供了app
关键字。这意味着您应该将login
替换为app.login
。
您还可以通过App.get_running_app()
在纯python中获取对该应用的引用,这实际上是app关键字在幕后的作用。