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

时间:2015-05-19 12:34:39

标签: android python kivy

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

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

enter image description here

我喜欢"左标签"和#34;右标签"直接出现在"选择英雄"按钮。我尝试使用' 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"

让这两行看起来更接近彼此的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

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

您可以通过多种方式解决此问题。最好的一个可能取决于你以后想要改变的其他内容,但一个简单的选择是手动将含有Label的BoxLayout的高度设置为更小的值,例如40。