【问题标题】:Kivy: how to use canvas for widgets created in pythonKivy:如何将画布用于在 python 中创建的小部件
【发布时间】:2017-03-19 13:00:00
【问题描述】:

我想在我的复选框中添加一个画布来更改它们的颜色。我找到了这个answer,但我正在努力实现它。 我的复选框是使用以下代码在 python 中创建的:

checkb= CheckBox()
layout.add_widget(checkb)

尝试1:我尝试了here的解决方案,但没有成功:

checkb= CheckBox()
checkb.canvas.add(Color(1., 1., 0))
checkb.canvas.add(Rectangle(size=(50, 50)))
layout.add_widget(checkb)

尝试 2:我还尝试在构建器中创建一个自定义复选框,但没有找到使其工作的方法(我找不到有关这种设置的任何信息,所以我不确定甚至可以让它工作):

Builder.load_string('''
<CustomCk@CheckBox>:
    canvas.before:
        Color:
            rgb: 1,0,0
        Rectangle:
            pos:self.center_x-8, self.center_y-8
            size:[16,16]
        Color:
            rgb: 0,0,0
        Rectangle:
            pos:self.center_x-7, self.center_y-7
            size:[14,14]                

''')

checkb= CustomCk()
layout.add_widget(checkb)

编辑:我尝试使用 with 语句:

checkb= CheckBox()  
with checkb.canvas:
    Color(1, 2, 0)
    Rectangle(size=(50, 50))
layout.add_widget(checkb)

【问题讨论】:

    标签: python canvas kivy


    【解决方案1】:

    您应该使用 Python 代码中的 with 语句

    with checkb.canvas:
        Color(1., 1., 0)
        Rectangle(size=(50, 50))
    

    您的其他方法似乎更好,只需稍微修复一下:

    Builder.load_string('''
    <CustomCk>:
        canvas.before:
            Color:
                rgb: 1,0,0
            Rectangle:
                pos:self.center_x-8, self.center_y-8
                size:[16,16]
            Color:
                rgb: 0,0,0
            Rectangle:
                pos:self.center_x-7, self.center_y-7
                size:[14,14]                
    
        ''')
    
    class CustomCk(CheckBox): #define the class in the python file... 
         pass
    
    checkb= CustomCk()
    layout.add_widget(checkb)
    

    【讨论】:

    • 我尝试了with 语句(参见我问题中的编辑),但背景保持不变。知道为什么吗?
    • kv 示例中,您还将 pos 绑定到 CheckBox 的中心,尝试在 with 中执行相同操作 示例(您还需要绑定 checkbox.center)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多