具有kivy布局的类

具有kivy布局的类,kivy,kivy-language,Kivy,Kivy Language,我希望使用kivy语言定义一个小部件,但随后我想向类中添加函数。下面是我天真的尝试,当我单击带有消息“AttributeError:“MyButton”对象没有属性“second_pressed”的按钮时失败 如何创建一个具有函数和kivy语言定义外观的类 import sys from kivy.app import App from kivy.lang import Builder from kivy.uix.boxlayout import BoxLayout root = Builde

我希望使用kivy语言定义一个小部件,但随后我想向类中添加函数。下面是我天真的尝试,当我单击带有消息“AttributeError:“MyButton”对象没有属性“second_pressed”的按钮时失败
如何创建一个具有函数和kivy语言定义外观的类

import sys
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

root = Builder.load_string('''
BoxLayout:
    Label:
        text: 'hello'
    MyButton:

<MyButton@Button>:
    text: 'Second button'
    on_press: self.second_pressed()
''')

class MyButton():
    def second_pressed():
        print "second pressed"
        sys.stdout.flush()

class Tryit(App):
    def build(self):
        return root

if __name__ == '__main__':
    Tryit().run()
导入系统 从kivy.app导入应用程序 从kivy.lang导入生成器 从kivy.uix.boxlayout导入boxlayout root=Builder.load\u字符串(“”) 盒子布局: 标签: 短信:“你好” 我的按钮: : 文本:“第二个按钮” 按:self.second按() ''') 类MyButton(): def秒_按下() 打印“第二次按下” sys.stdout.flush() 类Tryit(应用程序): def生成(自): 返回根 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': Tryit().run()
这将动态定义一个名为
MyButton
的新类,该类与添加该方法的python代码中的
MyButton
无关

要使其工作,只需编写
,它表示现有类的规则。您可能还需要延迟
Builder.load\u string
,直到声明该类之后-通常最好在应用程序的
build
方法中执行此操作,因为所有重要的内容都保证在此时初始化

<MyButton@Button>: