首页 > 解决方案 > 如何在 Kivy 中获取大小提示以应用于布局元素而不是窗口

问题描述

我有以下带有示例窗口大小的代码。我希望所有小部件都进入一个BoxLayout被调用的inlay. 但是,无论我将提示放在哪里或如何附加小部件,提示仍然适用于整个窗口。

如代码所示,对于 (500, 600) 的窗口,嵌体的尺寸应仅为 (480, 600),即最接近的 8 x 10 尺寸。但是,提示是针对 (500, 600) 大小呈现的:

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window

Window.size = (500, 600)

class SCApp(App):
    def build(self):
        # Define the (relative) 8 x 10 inlay for the board.
        for n in range(8, Window.width, 8):
            if n * 1.25 <= Window.height:
                inlay_dims = (n, int(n * 1.25))
                print(inlay_dims)
            else:
                break
        inlay = BoxLayout(orientation="vertical")
        inlay.size = inlay_dims
        top_portion = BoxLayout(orientation="horizontal")
        inlay.add_widget(top_portion)
        top_portion.size_hint = (1, 0.1)
        top_portion.add_widget(widget=Button())
        mid_portion = BoxLayout(orientation="horizontal")
        inlay.add_widget(mid_portion)
        mid_portion.size_hint = (1, 0.8)
        btm_portion = BoxLayout(orientation="horizontal")
        inlay.add_widget(btm_portion)
        btm_portion.size_hint = (1, 0.1)
        top_portion.add_widget(widget=Button())
        return inlay

SCApp().run()

如何使_portion布局的大小提示评估为给定的大小inlay

标签: pythonlayoutkivy

解决方案


使用 时size,通常还必须使用size_hint=(None, None)as size_hintwill override size 设置。所以尝试更换:

    inlay = BoxLayout(orientation="vertical")

和:

    inlay = BoxLayout(orientation="vertical", size_hint=(None, None))

推荐阅读