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

Posted

技术标签:

【中文标题】我只想将来自 kivy 的 MapView 放在我的应用程序的屏幕中,通过初始菜单上的按钮访问【英文标题】:I just want to put a MapView from kivy inside a screen of my application, being accessed by a button on the initial menu 【发布时间】:2019-11-13 18:07:16 【问题描述】:

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

程序化 mapa do fundão 编辑 sair

我只是希望当点击按钮时,“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'

【问题讨论】:

【参考方案1】:

解决办法是去掉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))

输出

【讨论】:

以上是关于我只想将来自 kivy 的 MapView 放在我的应用程序的屏幕中,通过初始菜单上的按钮访问的主要内容,如果未能解决你的问题,请参考以下文章

我只想将 regex_replace 用于第一个字符(电话号码)

我只想将 5GB 从 MySql 加载到 BigQuery

我只想将字符串和 int 输入到某个特定的数组,但我遇到了一些错误

content-security-policy 不起作用我只想将我的网站加载到另一个网站上的 iFrame 中

无法在 MapView 上显示缩放按钮

为啥kivy mapview本身在android上似乎是一个错误?