【问题标题】:KIVY BoxLayout inside other BoxLayouts其他 BoxLayouts 中的 KIVY BoxLayout
【发布时间】:2021-07-26 20:57:02
【问题描述】:

所以我对 KIVY 很陌生,我正在尝试制作一个简单的菜单之类的东西。 python文件为:

from kivy.app import App

class MenuApp(APP):
    pass
MenuApp().run()

还有 kivy 文件:

Interface:


<Interface@BoxLayout>:
    Label:
        text: "logo"

    BoxLayout:
        orientation: "vertical"

        BoxLayout:
            Button:
                text: "b1"
                size_hint: .3, 1
            Button:
                text: "b2"

        Button:
            text: "b3"
            size_hint: .3, 1
            pos_hint: {"center_x": 0.5}
                

        Button:
            text: "b4"
            size_hint: .3, 1
            pos_hint: {"right": 1}

问题来自按钮“b1”和“b2”。当我给他们一个 size_hint 时,它不会改变任何东西。其余工作的 size_hints 和当我将它们从 BoxLayout 中取出时这两个工作。这只是一件事吗?你不能把 boxlayers 放在另外 2 个 boxlayers 里面吗?还是我做错了什么?

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    来自BoxLayout documentation:

    size_hint 使用减去所有空间后的可用空间 固定大小的小部件。

    所以BoxLayout 根据size_hint 的值划分可用空间。在您的代码中,b1 按钮具有 size_hint.3,而 b2 具有默认的 size_hint1.0。然后共享算法为b1 提供0.3/(1.0+0.3)(或0.230769)可用空间份额,b2 获得1.0/(1.0+0.3)(或0.769231)可用空间份额。您必须考虑两个Buttonssize_hints,如果您不指定一个,则包括默认值。

    【讨论】:

    • 好的,这确实有助于我理解发生了什么,所以谢谢,但问题不在于 b1 和 b2 的比例变化,而是它们根本没有变化。即使我删除 b2 并仅更改 b1 上的 size_hint,大小也不会改变,而 b3 和 b4 会改变。
    • 使用我上面的描述,你可以看到只要你在BoxLayout 中只有一个小部件,只要它的size_hint 不是None,它将获得100% 的可用空间(0.3/0.3 是 1.0)。如果要调整BoxLayout 中的小部件的宽度,当它是BoxLayout 中的唯一小部件时,您必须将其size_hint 设置为None 并指定width,或者调整@987654345包含BoxLayout的@。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多