在 kivy scatter 中调整小部件的大小

resize widget in kivy scatter

我想使用 kivy 散点图来调整散点图包含的小部件的大小。因此,我创建了 box_total 包含在 scatter 中,包含在 floatlayout 中。

这是代码:

from kivy.app import App

from kivy.uix.scatter import Scatter
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

class TutorialApp(App):
    def build(self):
        b = BoxLayout(orientation='vertical')
        button = Button(text = 'something')
        b.add_widget(button)


        box_labels = BoxLayout(orientation = 'horizontal')
        label1 = Label(text = 'hello')
        box_labels.add_widget(label1)
        label2 = Label(text = 'world')
        box_labels.add_widget(label2)

        box_buttons = BoxLayout(orientation = 'horizontal')
        button1 = Button(text = 'hello')
        box_buttons.add_widget(button1)
        button2 = Button(text = 'world')
        box_buttons.add_widget(button2)

        box_total = BoxLayout(orientation = 'vertical')
        box_total.add_widget(box_labels)
        box_total.add_widget(box_buttons)


        f = FloatLayout()
        s = Scatter()
        f.add_widget(s)        
        s.add_widget(box_total)
        b.add_widget(f)

        return b

if __name__ == "__main__":
    TutorialApp().run()

这就是我得到的:

如何调整内部小部件 box_total 的大小以占据整个 FloatLayout 区域? (window的下半部分)

Scatter 不是布局,因此位置的自动设置在这里不起作用。使用 ScatterLayout 的行为既像 Scatter 又像 FloatLayout

from kivy.uix.scatterlayout import ScatterLayout
ScatterLayout()

或者通过在 FloatLayout 中设置小部件的位置手动执行此操作,但请记住您需要先执行 size_hint=(None, None)