BoxLayout背景颜色位置错误

时间:2015-09-27 21:19:59

标签: python kivy

考虑到下面的布局,我预计BoxLayout是屏幕顶部的44px条形图,红色背景,带有两个“日期时间”标签。如屏幕截图所示,标签是预期的位置(因此框布局的位置是正确的),红色背景则不然:

enter image description here

我确信我错过了一些明显的东西,因为这是我第一次使用Kivy和KV。我尝试使用canvas。{before,after}无济于事。我错过了什么?提前感谢您的任何答案!

#:kivy 1.0
#
FloatLayout:    
    canvas:
        Color:
            # #263238
            rgb: 0x26 / 255.0, 0x32 / 255.0, 0x38 / 255.0

        Rectangle:
            size: self.size

    BoxLayout:
        canvas:
            Color:
                rgb: 1, 0, 0
            Rectangle:
                size: self.size

        orientation: 'horizontal'
        padding: 10
        spacing: 10
        size_hint: 1, None
        pos_hint: {'top': 1}
        height: 44

        Label:
            height: 24
            text_size: self.width, None
            text: 'Date time'

        Label:
            height: 24
            text_size: self.width, None
            text: 'Date time 2'

    Label:
        text: 'testing'

编辑:根据Totem的回答,将pos: self.pos添加到BoxLayout画布矩形就可以了。

2 个答案:

答案 0 :(得分:2)

正如你所提到的,你是BoxLayout的目的地。它充满了两个标签,这也是它们的意图。为了使所有这些背景看起来都是红色,您可以将标签背景设为红色。你已经把BoxLayout变成了红色,它只是在标签后面看不到,而且我不完全确定如何让它们变得透明(我确信这是可能的)。我认为,学习kivy最终都是关于实验的。

要使标签具有红色背景(给您相同的效果),您可能可以使用各自的画布,就像使用BoxLayout一样,除了使用canvas.before。您不需要再使用浮动或框布局。

来自评论: 将boxlayouts矩形位置设置为pos: self.pos

答案 1 :(得分:1)

我解决了这个问题。参见图中红色区域。 BoxLayout's Background color output image。在本节中,我在 self.size 之后添加 pos:self.pos 看起来像。

Rectangle:
    size: self.size
    pos:self.pos

它应该可以工作。