在Kivy应用程序中重用自定义Widget

时间:2015-02-21 13:51:20

标签: python frameworks widget kivy

我有一个简单的kivy应用程序与kv文件关联如下,我想重新使用我的自定义小部件(包括他的外观)在另一个kivy应用程序。这是要重用的小部件:

class MyButton(Button):
pass

class MyComposit(Widget):
    button1 = ObjectProperty(None)
    lab = ObjectProperty(None)

class MyApp(App):
    def build(self):
        comp = MyComposit()
        return comp

if __name__ == '__main__':
    MyApp().run()

my.kv文件:

<MyButton>
    canvas:
        Rectangle:
           size: 30,30
           pos: self.pos

<MyComposit>
    size: 400,500
    button1: btn1
    lab: lb

    Label
        id: lb
        text: "label"
        pos: root.center_x,root.center_y

    MyButton:
       id: btn1
       text: "btn1"
       pos: root.x/3,200

为什么我的下一个应用中没有显示我的小部件MyComposit的空白页?

from my_composit import MyComposit

class BigWidget(Widget):
    n = ObjectProperty(None)

class BigApp(App):
    def build(self):
        b = BigWidget()
        return b

if __name__ == '__main__':
    BigApp().run()

big.kv文件:

#:kivy 1.0.9


<BigWidget>
    n: idcomp

    MyComposit:
        id: idcomp

1 个答案:

答案 0 :(得分:0)

您的新应用程序不包含MyComposit小部件的kv规则,因此它可能正常工作但只是没有显示您可见的任何内容。将相关的kv复制到big.kv以使其正常工作。

您可能也想查看布局类,否则您必须手动设置所有内容的位置和大小。