Kivy mapview - 将按钮小部件放在mapview小部件的顶部

时间:2018-04-12 15:22:35

标签: python kivy

我试图将一些小部件添加到像这样的Kivy mapview

mapview = self.mapWidget(self.lat, self.lon)        
touchBarbtn1 = Button(text='Unlock')
touchBarbtn1.bind(on_press=lambda x: self.centerOnUser())
mapview.add_widget(touchBarbtn1)

但无论我给出什么样的布局选项,它总是卡在左下角。即使我添加了更多小部件,它们也只是在左下角堆叠在一起。我的目标是在右上角设置一个按钮,将地图置于用户的中心位置。

1 个答案:

答案 0 :(得分:0)

  1. 使用Kivy Anchor Layout
  2. 如果您要添加更多按钮,我的建议是使用Kivy Drop-Down List
  3. 实施例

    main.py

    from kivy.garden.mapview import MapView
    from kivy.app import App
    from kivy.uix.anchorlayout import AnchorLayout
    from kivy.uix.button import Button
    from kivy.properties import NumericProperty
    
    
    class RootWidget(AnchorLayout):
        lat = NumericProperty(50.6394)
        lon = NumericProperty(3.057)
    
        def __init__(self, **kwargs):
            super(RootWidget, self).__init__(**kwargs)
            self.anchor_x = 'right'
            self.anchor_y = 'top'
            mapview = MapView(zoom=11, lat=self.lat, lon=self.lon)
            self.add_widget(mapview)
            touchBarbtn1 = Button(text='Unlock', size_hint=(0.1, 0.1))
            touchBarbtn1.bind(on_press=lambda x: self.centerOnUser())
            self.add_widget(touchBarbtn1)
    
        def centerOnUser(self):
            pass
    
    
    class MapViewApp(App):
        def build(self):
            return RootWidget()
    
    
    MapViewApp().run()
    

    输出

    Img01 - Unlock Button Top Right Corner