【问题标题】:Classes with kivy layout带有 kivy 布局的类
【发布时间】: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()

【问题讨论】:

    标签: kivy kivy-language


    【解决方案1】:
    <MyButton@Button>:
    

    这会动态定义一个名为MyButton 的新 类,它与您为其添加该方法的python 代码中的MyButton 无关。

    要让它工作,只写&lt;MyButton&gt;:,它表示现有类的规则。您可能还需要将 Builder.load_string 延迟到声明此类之后 - 通常最好在应用程序的 build 方法中执行此操作,因为此时可以保证所有重要的内容都已初始化。

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多