Kivy:减少小部件之间的额外间距

Kivy: Reduce extra spacing between widgets

我有一个 Kivy 应用程序,它使用两行的 GridLayout。第一行包含一个带有项目列表的下拉按钮。第二行包含一个带有两个标签的 BoxLayout。

我注意到这两个小部件(下拉列表和标签)之间有很多 space。这是截图

我希望 "Left Label" 和 "Right Label" 直接显示在 "Select Hero" 按钮下方。我尝试使用 'anchor_x' 和 'anchor_y' 值,但它似乎不影响布局。

这是我的 main.py:

from kivy.app import App
from kivy.properties import ObjectProperty, StringProperty, ListProperty
from kivy.uix.button import Button
from kivy.uix.dropdown import DropDown
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition  

class HeroScreen(Screen):
    dropdown = DropDown()
    dd_btn = ObjectProperty(None)

    def __init__(self, **kwargs):
        super(HeroScreen, self).__init__(**kwargs)
        dropdown_list = [
            'Ant Man',
            'Batman',
            'Cat Woman',
            'Danger Mouse',
            ]
        for hero in dropdown_list:
            btn = Button(text=hero, size_hint_y=None, height=30)
            btn.bind(on_release=lambda btn: self.say_hero(btn.text))
            self.dropdown.add_widget(btn)

        self.dd_btn = Button()
        self.dd_btn.bind(
            on_release=self.dropdown.open,
            )

    def say_hero(self, hero_name):
        print "Hero: ", hero_name

class HeroApp(App):
    screen_manager = None

    def build(self):
        self.screen_manager = ScreenManager(transition=NoTransition())
        self.screen_manager.add_widget(HeroScreen(name='hero_screen'))
        return self.screen_manager

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

这是我的 hero.kv:

<HeroScreen>:
    rows: 2
    dd_btn: dd_btn_id
    AnchorLayout:
        anchor_x: 'left'
        anchor_y: 'top'
        BoxLayout:
            size_hint_y: None
            height: 30
            orientation: 'horizontal'
            BoxLayout:
                size_hint_x: .4
                Button:
                    id: dd_btn_id
                    text: 'Select Hero'
                    on_release: root.dropdown.open(self)

    AnchorLayout:
        anchor_x: 'left'
        anchor_y: 'top'
        BoxLayout:
            orientation: "horizontal"
            width: 400
            size_hint_x: None    
            Label:
                text: "Left Label"
                font_size: "20dp"
            Label:
                text: 'Right Label'
                font_size: "20dp"

让这两行看起来更靠近另一行的正确方法是什么?

小部件之间没有 space,只是标签的文本位于每个标签的中间(填充了整个垂直间隙)。

您可以通过多种方式解决这个问题。最好的可能取决于您以后还想更改什么,但一个简单的选择是手动将包含标签的 BoxLayout 的高度设置为更小的值,例如40.