在 Kivy 应用程序中重用自定义小部件
Reuse custom Widget in Kivy app
我有一个简单的 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
您的新应用不包含 MyComposit 小部件的 kv 规则,因此它可能工作正常但没有显示任何对您可见的内容。将相关的 kv 复制到 big.kv 以使其工作。
您可能还想查看布局 类,否则您将不得不手动设置所有内容的位置和大小。
我有一个简单的 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
您的新应用不包含 MyComposit 小部件的 kv 规则,因此它可能工作正常但没有显示任何对您可见的内容。将相关的 kv 复制到 big.kv 以使其工作。
您可能还想查看布局 类,否则您将不得不手动设置所有内容的位置和大小。