如何在Kivy中获得应用于布局元素而非窗口的大小提示



我得到了以下带有示例窗口大小的代码。我希望所有的小部件都进入一个名为inlayBoxLayout,而不是划分窗口的百分比。然而,无论我把提示放在哪里或如何附加小部件,提示仍然适用于整个窗口。

正如代码所示,对于(500600(的窗口,镶嵌体的尺寸应仅为(480600(,即最接近的8x10尺寸。然而,提示是为(500600(大小呈现的:

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大小?

当您使用size时,您通常还必须使用size_hint=(None, None),因为size_hint将超过游乐设施大小设置。所以尝试替换:

inlay = BoxLayout(orientation="vertical")

带有:

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

最新更新