问题和基维语言

2024-04-19 02:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的Kivy,仍然在寻找最佳的使用方法。目前,我正在从他们的repo(textsizedemo)中取一个例子,尝试在个人项目中使用布局概念。在

一天下来,我只想在屏幕顶部有一个“导航栏”,下面是一个内容部分。目前,我正试图用一个包含StackLayout(nav items)和GridLayout(其他内容)的BoxLayout来实现这一点。在

我的代码段:

<WindowWidget>:
    BoxLayout:
        orientation: 'vertical'
        StackLayout:
            Label:
                text: 'Test1'
            Label:
                text: 'Test1.1'
        Label:
            text: 'Test2'

这段代码生成了:Kivy Screenshot。在

我不明白为什么标签1.1被推到标签2的顶部,而不是出现在标签1的旁边。在

我希望在下面的代码中添加一些设置:

代码:

^{pr2}$

错误:

Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute

这是因为我把“身高:自身最小高度“行。然而,这在演示中起作用了,所以我不知道我是怎么搞砸的。我将包括下面的例子的kv代码以供参考。在

原件:

BoxLayout:
    orientation: 'vertical'

    HeadingLabel:
        text: 'These modify all demonstration Labels'

    StackLayout:
        # Button is a subclass of Label and can be sized to text in the same way

        Button:
            text: 'Reset'
            on_press: app.reset_words()

        ToggleButton:
            text: 'Shorten'
            on_state:
                app.shorten=self.state=='down'

        ToggleButton:
            text: 'max_lines=3'
            on_state:
                app.max_lines=3 if self.state=='down' else 0

        Spinner:
            text: 'bottom'
            values: 'bottom', 'middle', 'top'
            on_text: app.valign=self.text

        Spinner:
            text: 'left'
            values: 'left', 'center', 'right', 'justify'
            on_text: app.halign=self.text

    GridLayout:
        id: grid_layout
        cols: 2
        height: cm(6)
        size_hint_y: None

        HeadingLabel:
            text: "Default, no text_size set"

        HeadingLabel:
            text: 'text_size bound to size'

        DemoLabel:
            id: left_content
            disabled_color: 0, 0, 0, 0

        DemoLabel:
            id: right_content
            text_size: self.size
            padding: dp(6), dp(6)

    ToggleButton:
        text: 'Disable left'
        on_state:
            left_content.disabled=self.state=='down'

    # Need one Widget without size_hint_y: None, so that BoxLayout fills
    # available space.
    HeadingLabel:
        text: 'text_size width set, size bound to texture_size'
        text_size: self.size
        size_hint_y: 1

    DemoLabel:
        id: bottom_content
        # This Label wraps and expands its height to fit the text because
        # only text_size width is set and the Label size binds to texture_size.
        text_size: self.width, None
        size: self.texture_size
        padding: mm(4), mm(4)
        size_hint_y: None

# The column heading labels have their width set by the parent,
# but determine their height from the text.
<HeadingLabel@Label>:
    bold: True
    padding: dp(6), dp(4)
    valign: 'bottom'
    height: self.texture_size[1]
    text_size: self.width, None
    size_hint_y: None

<ToggleButton,Button>:
    padding: dp(10), dp(8)
    size_hint: None, None
    size: self.texture_size

# This inherits Button and the modifications above, so reset size
<Spinner>:
    size: sp(68), self.texture_size[1]

<DemoLabel@Label>:
    halign: app.halign
    valign: app.valign
    shorten: app.shorten
    max_lines: app.max_lines

    canvas:
        Color:
            rgb: 68/255.0, 164/255.0, 201/255.0
        Line:
            rectangle: self.x, self.y, self.width, self.height

<StackLayout>:
    size_hint_y: None
    spacing: dp(6)
    padding: dp(6), dp(4)
    height: self.minimum_height

泰亚


Tags: thetextselfnoneappsizeonwidth