2015-05-19 91 views
1

我有一个Kivy应用程序,它使用两行GridLayout。第一行包含一个包含项目列表的下拉按钮。第二行包含带有两个标签的BoxLayout。Kivy:减少小部件之间的额外间距

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

enter image description here

我想“左标签”和“右标签”,直接出现“选择英雄”按钮下方。我尝试使用'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

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

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

+0

我不得不将它设置为100而不是40,但是这个工作非常感谢。 –