2015-05-19 123 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,但是這個工作非常感謝。 –