Kivy:继承另一个动态类值

Posted

技术标签:

【中文标题】Kivy:继承另一个动态类值【英文标题】:Kivy: inherit another dynamic classes values 【发布时间】:2018-03-10 15:30:33 【问题描述】:

我有一个这样的动态类:

<BLMother@BoxLayout>:
    orientation:"horizontal"
    padding: 10, 0
    spacing: 10

对于我的一些 CustomBoxLayout,我想添加一个画布:before。 我可以创建一个新的动态类,它将两者的值结合起来,如下所示:

<BLChildren@BoxLayout>:
    orientation:"horizontal"
    padding: 10, 0
    spacing: 10
    canvas.before:
        Color:
            rgba: 1, 1, 1, 0.8
       Rectangle:
            size: self.size
            pos: self.x + self.width*0.025, self.y    

有没有办法BLChildren 可以继承BLMother 的所有值?

我使用 Kivy (1.10.1.dev0)

【问题讨论】:

【参考方案1】:

是的,BLChildren 可以继承 BLMother 的所有值。详情请参考以下示例。

示例 - 从 BLMother 继承

main.py

​​>
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout


class RootWidget(FloatLayout):
    pass


class TestApp(App):
    title = "With Inheritance of BLMother"

    def build(self):
        return RootWidget()


if __name__ == "__main__":
    TestApp().run()

test.kv

#:kivy 1.10.0

<BLMother@BoxLayout>:
    orientation:"horizontal"
    padding: 10, 0
    spacing: 10

<BLChildren@BoxLayout>:
    canvas.before:
        Color:
            rgba: 1, 1, 1, 0.8
        Rectangle:
            size: self.size
            pos: self.x + self.width*0.025, self.y
    BLMother:

<RootWidget>:
    BLChildren:

输出 - 从 BLMother 继承

【讨论】:

感谢您的详细解释。我尝试了一下,我认为这会创建两个 BoxLayout:BLMother 在 BLChildren 内部。这与我以前的标题相匹配,但我犯了一个错误,我的意思不是嵌套而是继承。对此感到抱歉。我希望只有一个 BoxLayout BLChildren,而这个 BLChildren 应该有自己的价值和 BLMother 的价值。有什么想法可以吗?【参考方案2】:

我不知道你为什么把 pos = self.x + self.width*0.025, self.y 但是 给你:

-kv:

<BLMother@BoxLayout>:
   orientation:"horizontal"
   padding: 10, 0
   spacing: 10

<BLChildren@BLMother>:
   canvas.before:
      Color:
         rgba: 1, 1, 1, 0.8
      Rectangle:
         size: self.size
         pos: self.x , self.y

BLChildren:

-py:

from kivy.app import App


class TestApp(App):
   pass


if __name__ == "__main__":
   TestApp().run()

【讨论】:

以上是关于Kivy:继承另一个动态类值的主要内容,如果未能解决你的问题,请参考以下文章

Kivy中的动态网格,每个网格元素包含多个小部件

Kivy 语言可以访问继承的布局和小部件吗?

Kivy 外部规则继承 2

Python Kivy - 在另一个屏幕上显示动态结果

Swift:如何让 UILabel 从另一个 UIlabel 继承字体大小?

类的重复碱基