首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python kivy文件中制作我的自定义widget,并通过更改其大小、位置和颜色来多次使用它?

如何在python kivy文件中制作我的自定义widget,并通过更改其大小、位置和颜色来多次使用它?
EN

Stack Overflow用户
提问于 2021-08-27 16:42:51
回答 2查看 121关注 0票数 0

这个代码不工作,请纠正我,并指导我如何使它。

-.py文件

代码语言:javascript
复制
class RLB(Widget):
    pass

class Bars(Widget):
        pass

class FGHApp(App):
    pass

FGHApp().run()

-FGH.kv文件

我在这里想做一个自定义的小部件命名为'RLB‘,我想让它像其他任何内置的小部件一样多次使用它,如按钮,标签,..

代码语言:javascript
复制
#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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-27 21:38:51

您应该定义以后要更改的属性

代码语言:javascript
复制
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文件

代码语言:javascript
复制
<RLB>:
   # use root instead of self
    canvas:
        Color:
            rgba:root.color
        RoundedRectangle:
            pos:root.pos
            size:root.size
            radius: [10]

你也可以使用来自here的任何kivy属性,有很多这样的属性

票数 1
EN

Stack Overflow用户

发布于 2021-08-28 04:58:44

最后我自己完成了:) 1我们必须创建一个窗口小部件类,并在上面添加所有的说明,比如颜色,大小,..This是因为我们不能编辑窗口小部件类,所以我们通过继承它来创建一个窗口小部件类的副本

代码语言:javascript
复制
<Wp@Widget>:
    size_hint:None,None
    size:(dp(100),dp(100))
    pos:(0,0)
    color:(1,1,1,1)

现在Wp是我们的新窗口小部件,有所有必需的东西,在此之后,我们必须使我们自己的窗口小部件谁继承了这个'Wp‘类。

代码语言:javascript
复制
<RLB@Wp>:
    canvas:
        Color:
            rgba:root.color
        RoundedRectangle:
            pos:root.pos
            size:root.size
            radius: [dp(10),]

现在它完成了,现在我们可以通过改变它的颜色,大小和位置来使用它任意的次数。

代码语言:javascript
复制
<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文件中不需要这样做了

代码语言:javascript
复制
#not needed
class RBL(Widget):
    pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68956848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档