【问题标题】:Kivy: ScreenManager stretches over the whole windowKivy:ScreenManager 覆盖整个窗口
【发布时间】:2020-12-24 23:50:50
【问题描述】:

我在 kivy 文件中遇到了 ScreenManager 和 Screen 的问题。我想在 BoxLayout 中有一个 ScreenManager,当我不使用 .kv 文件时它可以工作。但是当我使用 kivy 文件时,带有“ContentScreenManager” id 的 ScreenManager 会延伸到整个窗口并且看不到前面的代码,我只看到“ok2”按钮。

我希望我已经很好地解释了我的问题:)

Python 文件

from kivy.app import App
from kivy.lang.builder import Builder

builder = Builder.load_file("index.kv")

class mainApp(App):
    def build(self):
        return builder


if __name__ == '__main__':
    mainApp().run()

.kv 文件

<Main>
ScreenManager:
    id: MainScreensManager
    Screen:
        name: "MainScreen"
        manager: 'MainScreensManager'
        BoxLayout:
            Label:
                text: "ok"
            Label:
                text: "ok1"
        BoxLayout:
            ScreenManager:
                id: ContentScreensManager
                Screen:
                    name: "FilmsScreen"
                    manager: "ContentScreensManager"
                    BoxLayout:
                        Button:
                            text: "ok2"

感谢您的帮助!

【问题讨论】:

    标签: kivy


    【解决方案1】:

    任何小部件的默认size_hint(1,1),这意味着它将覆盖整个父小部件。所以你的kv 将导致所有东西填满整个Screen。最终只有最后绘制的东西(“ok2”按钮)可见。因此,您只需将size_hint 设置为值(或将size_hint 设置为None.None,然后设置size)。您可能还想设置pospos_hint。看看size_hint documentation

    【讨论】:

    • 谢谢!出于某种原因,我认为 Screen 已经作为容器工作了
    • Screen 是一个容器,它扩展了RelativeLayout
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多