Python 在Kivy应用程序中重用自定义小部件
我有一个简单的kivy应用程序,其kv文件如下所示,我想在另一个kivy应用程序中重用我的自定义小部件(包括他的外观)。这是要重用的小部件:Python 在Kivy应用程序中重用自定义小部件,python,frameworks,widget,kivy,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 = My
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
big.kv文件:
#:kivy 1.0.9
<BigWidget>
n: idcomp
MyComposit:
id: idcomp
#:kivy 1.0.9
n:idcomp
MyComposit:
id:idcomp
您的新应用程序没有针对MyComposit小部件的kv规则,因此它可能工作正常,但不会显示任何您可见的内容。将相关kv复制到big.kv以使其工作
您可能还需要查看布局类,否则必须手动设置所有内容的位置和大小。谢谢您的回复。我知道布局类,但我没有在这里使用它们来保持代码的简单和简短。无论如何,我知道在big.kv中复制相关的kv规则显然会显示MyComposit。但是,当我使用一个已经“定义”的小部件(使用他的.kv文件)时,没有办法继承kv规则吗?我真的需要随时复制我所有的kv代码吗?@Carpo23您还可以加载其他kivy文件。请参阅kivy文档中的内容。小部件没有kv文件,并且除了与应用程序类关联的单个kv文件外,没有隐式加载。您必须手动加载任何额外文件,或将其中包含的规则复制到已加载的文件中。
#:kivy 1.0.9
<BigWidget>
n: idcomp
MyComposit:
id: idcomp