1
我有一個Kivy應用程序,它使用兩行GridLayout。第一行包含一個包含項目列表的下拉按鈕。第二行包含帶有兩個標籤的BoxLayout。Kivy:減少小部件之間的額外間距
我注意到這兩個小部件(下拉菜單和標籤)之間有很大的空間。下面是截圖
我想「左標籤」和「右標籤」,直接出現「選擇英雄」按鈕下方。我嘗試使用'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"
什麼是讓這兩行出現相互靠近的正確方法?
我不得不將它設置爲100而不是40,但是這個工作非常感謝。 –