微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从派生的 kivy 类访问 Python 函数

如何解决从派生的 kivy 类访问 Python 函数

我想要几个派生的 kivy 按钮在随附的 Python 程序中调用相同的函数。这里,两个按钮分别调用 root.butclick()

<Classtest>:
BoxLayout:
    spacing: 1
    orientation:'vertical'
    canvas.before:
        Color:
            rgba: .8,.8,1
        Rectangle:
            size: self.size
            pos: self.pos
    Label
        id: toplabel
        color: 0,1,1
        size_hint: (0.5,0.1)
        text: 'Hi there'
    GrayButton:
        text: 'Hello'
        on_press:
            root.butclick(self.text)
    GrayButton:
        text: 'Goodbye'
        on_press:
            root.butclick(self.text)

这是派生的 GrayButton 类。它对 butclick()调用被注释掉了,因为它不能访问它,因为它不是 <Classtest> 类的一部分。

<GrayButton@Button>:
color: 0,1
background_normal: ''
size_hint: (0.5,0.1)
background_color: .9,.9,#on_press:
#    root.butclick(self.text)

为了完整起见,这里是随附的 Python 代码

from kivy.app import App
from kivy.core.window import Window
from kivy.config import Config
from kivy.uix.Boxlayout import BoxLayout

class Classtest(BoxLayout):
    def build(self):
        self.title = "Test kivy classes"

    # Add click event
    def butclick(self,txt):
        self.ids.toplabel.text = txt

class MainApp(App):
    def build(self):
        Window.size = (200,100)
        self.load_kv('classtest.kv')
        return Classtest()

MainApp().run()

如果您能建议 GrayButton 类本身调用 Python 程序中的 butclick 方法,请告诉我。我认为某种 ObjectProperty 可能会起作用,但我不知道它会如何工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。