如何在 python kivy 文件中制作我的自定义小部件,并通过更改其大小、位置和颜色来多次使用它?
How do I make my custom widget in python kivy file and use it multiple times by changing its size, pos and color?
此代码无效,请指正并指导我如何制作它。
-.py文件
class RLB(Widget):
pass
class Bars(Widget):
pass
class FGHApp(App):
pass
FGHApp().run()
-FGH.kv 文件
我在这里想要制作名为 'RLB' 的自定义小部件,我希望它像按钮、标签等任何其他内置小部件一样多次使用它
#My custom widget
Bars:
<RLB>:
canvas:
Color:
rgba:self.color
RoundedRectangle:
pos:self.pos
size:self.size
radius: [10]
<Bars>:
FloatLayout:
size:root.size
RLB:
#Error
color:(1,0,1,1)
pos:(100,100)
size:(200,200)
RLB:
#Error
color:(1,0,0,0.5)
pos:(300,300)
size:(200,200)
您应该定义稍后要更改的 属性
class RLB(Widget):
# you can give an initial value white for example
# You don't need to add pos and size properties, since Widget already has those proprties.
color=ListProperty([1,1,1,1])
然后你应该参考这个属性是kv文件
<RLB>:
# use root instead of self
canvas:
Color:
rgba:root.color
RoundedRectangle:
pos:root.pos
size:root.size
radius: [10]
你也可以使用 here 中的任何 kivy 属性 有很多
终于我自己完成了:)
1st 我们必须制作一个小部件 class 并在其上添加所有说明,如颜色、大小、..这是因为我们无法编辑小部件 class 所以我们创建了小部件 [=23= 的副本] 通过继承
<Wp@Widget>:
size_hint:None,None
size:(dp(100),dp(100))
pos:(0,0)
color:(1,1,1,1)
现在 Wp 是我们的新小部件,它拥有所有需要的东西,之后我们必须制作我们自己的小部件,它继承自这个 'Wp' class.
<RLB@Wp>:
canvas:
Color:
rgba:root.color
RoundedRectangle:
pos:root.pos
size:root.size
radius: [dp(10),]
大功告成,现在我们可以通过更改颜色、大小和位置来多次使用它。
<Bars>:
FloatLayout:
size:root.size
RLB:
color:(1,1,0,1)
pos:(0,0)
size:(100,100)
RLB:
color:(1,0,1,1)
pos:(100,100)
size:(100,100)
现在 .py 文件中不需要这个了
#not needed
class RBL(Widget):
pass
此代码无效,请指正并指导我如何制作它。
-.py文件
class RLB(Widget):
pass
class Bars(Widget):
pass
class FGHApp(App):
pass
FGHApp().run()
-FGH.kv 文件
我在这里想要制作名为 'RLB' 的自定义小部件,我希望它像按钮、标签等任何其他内置小部件一样多次使用它
#My custom widget
Bars:
<RLB>:
canvas:
Color:
rgba:self.color
RoundedRectangle:
pos:self.pos
size:self.size
radius: [10]
<Bars>:
FloatLayout:
size:root.size
RLB:
#Error
color:(1,0,1,1)
pos:(100,100)
size:(200,200)
RLB:
#Error
color:(1,0,0,0.5)
pos:(300,300)
size:(200,200)
您应该定义稍后要更改的 属性
class RLB(Widget):
# you can give an initial value white for example
# You don't need to add pos and size properties, since Widget already has those proprties.
color=ListProperty([1,1,1,1])
然后你应该参考这个属性是kv文件
<RLB>:
# use root instead of self
canvas:
Color:
rgba:root.color
RoundedRectangle:
pos:root.pos
size:root.size
radius: [10]
你也可以使用 here 中的任何 kivy 属性 有很多
终于我自己完成了:) 1st 我们必须制作一个小部件 class 并在其上添加所有说明,如颜色、大小、..这是因为我们无法编辑小部件 class 所以我们创建了小部件 [=23= 的副本] 通过继承
<Wp@Widget>:
size_hint:None,None
size:(dp(100),dp(100))
pos:(0,0)
color:(1,1,1,1)
现在 Wp 是我们的新小部件,它拥有所有需要的东西,之后我们必须制作我们自己的小部件,它继承自这个 'Wp' class.
<RLB@Wp>:
canvas:
Color:
rgba:root.color
RoundedRectangle:
pos:root.pos
size:root.size
radius: [dp(10),]
大功告成,现在我们可以通过更改颜色、大小和位置来多次使用它。
<Bars>:
FloatLayout:
size:root.size
RLB:
color:(1,1,0,1)
pos:(0,0)
size:(100,100)
RLB:
color:(1,0,1,1)
pos:(100,100)
size:(100,100)
现在 .py 文件中不需要这个了
#not needed
class RBL(Widget):
pass