Python BoxLayout背景色位置错误

Python BoxLayout背景色位置错误,python,kivy,Python,Kivy,考虑到下面的布局,我希望BoxLayout在屏幕顶部是一个44px的条,带有红色背景和两个“日期-时间”标签。如屏幕截图所示,标签位于预期位置(因此框布局的位置正确),而红色背景则不是这样: 我确信我遗漏了一些明显的东西,因为这是我第一次使用Kivy和KV。我试着用canvas.{before,after}没用。我错过了什么?提前感谢您的回答 #:kivy 1.0 # FloatLayout: canvas: Color: # #2632

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

我确信我遗漏了一些明显的东西,因为这是我第一次使用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'

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

正如您所提到的,BoxLayout就是您想要的。它充满了两个标签,这也是他们的目的地。为了使所有这些的背景看起来是红色的,你可以把标签背景变成红色。您已经将BoxLayout设置为红色,只是无法在标签后面看到它,我不完全确定如何使其透明(我确信这是可能的)。我认为,学习kivy归根结底就是要进行实验

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

从评论中
将boxlayouts矩形位置设置为
pos:self.pos
我解决了这个问题。请参见图中的红色区域。在本节中,我在self.size之后添加pos:self.pos,如下所示

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

应该行。

我重新表述了这个问题。FloatLayout的背景为灰色,覆盖了整个屏幕(包括所有标签)。红色用于长方体布局画布-请注意,红色条是长方体布局的高度,就好像Kivy正确地重新定位和调整长方体布局的大小一样,但由于某些原因,长方体布局的画布停留在屏幕底部。此外,标签在默认情况下看起来是透明的-因为它们没有设置背景色/画布,我们可以通过它们看到FloatLayout背景。看起来bug-BoxLayout毕竟在屏幕的顶部,所以应该是它的画布。将boxlayouts矩形位置设置为pos:self.post标签默认也有灰色背景图像,就像kivy中的大多数小部件一样,因此您在那里看到的是它们自己的背景图像。默认情况下,它们不是透明的。至少,他们不是命中注定的!