首页 > 解决方案 > 我只想将来自 kivy 的 MapView 放在我的应用程序的屏幕中,通过初始菜单上的按钮访问

问题描述

我有一个带有以下按钮的菜单:

我只是希望当点击按钮时,'mapa do fundão' 它会将我带到地图(在这种情况下,在其他屏幕中打开地图)

我确实做过研究,但它让我很头疼。

我的 py 和 kv 文件如下:

main.py 文件

import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
from kivy.garden.mapview import MapView
from kivy.lang.builder import Builder
from kivy.base import runTouchApp

bu = Builder.load_file('ence.kv')

class Gerenciador(ScreenManager):
    pass

class Menu(Screen):enter code here
    pass

class Programacao(Screen):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)

class MapViewApp(App):
    def build(self):
        mapview = MapView(zoom=11, lat=50.6394, lon=3.057)
        return MapViewApp ().run()

class Ence(App):
    def build(self):
        return Gerenciador()

Ence().run()

ence.kv - kv 文件

<Gerenciador>
    Menu:
        name: 'menu'
    Programacao:
        name: 'programacao'
    
<Menu>:
    BoxLayout:
        orientation: 'vertical'
        padding:100
        spacing:0
        
        Image:
            source: "logo.png"
            size_hint_y:None
            height:200

        Button:
            text: 'Programação'
            on_release:app.root.current = 'programacao'
        Button:
            text: 'Mapa do Fundão'
            on_release:app.root.current = 'map'  
        Button:
            text: 'Editais'
        Button:
            text: 'Sair'
            on_release:app.stop()

<Programacao>
    name: 'programacao'
    BoxLayout:
        orientation: 'vertical'

标签: pythonpython-3.xkivyscreenkivy-language

解决方案


解决方案是删除class MapViewApp()并添加以下内容class Mapa()

片段 - py 文件

class Mapa(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.add_widget(MapView(zoom=11, lat=50.6394, lon=3.057))

输出

结果 - 地图视图


推荐阅读