带有 kivy 布局的类
Posted
技术标签:
【中文标题】带有 kivy 布局的类【英文标题】:Classes with kivy layout 【发布时间】:2017-05-05 02:45:20 【问题描述】:我希望使用 kivy 语言定义一个小部件,但是我想在类中添加函数。下面是我的天真尝试,当我单击带有消息“AttributeError:'MyButton' object has no attribute '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()
【问题讨论】:
【参考方案1】:<MyButton@Button>:
这会动态定义一个名为MyButton
的新 类,它与您为其添加该方法的python 代码中的MyButton
无关。
要让它工作,只写<MyButton>:
,它表示现有类的规则。您可能还需要将 Builder.load_string
延迟到声明此类之后 - 通常最好在应用程序的 build
方法中执行此操作,因为此时可以保证所有重要的内容都已初始化。
【讨论】:
以上是关于带有 kivy 布局的类的主要内容,如果未能解决你的问题,请参考以下文章