Kivy/ Kivymd 地图切换屏幕

Posted

技术标签:

【中文标题】Kivy/ Kivymd 地图切换屏幕【英文标题】:Kivy/ Kivymd Map switch screens 【发布时间】:2021-06-14 00:09:12 【问题描述】:

我想单击一个将我引导至地图的按钮。然后当我点击地图窗口上的一个按钮时,我想回到开始窗口https://i.stack.imgur.com/sxAr2.png

https://github.com/Mapquestions/map 代码在这里

【问题讨论】:

【参考方案1】:

虽然我找不到任何文档来支持这一点,但我相信您无法在包含的 kv 文件中定义您的根小部件(至少我无法让它工作)。

所以,您的main.kv 应该如下所示:

#:include binsmapview.kv

ScreenManager:
    Screen1:
    Screen2:

那么,您的binsmapview.kv 可以是:

#:import MapView kivy.garden.mapview.MapView
#ScreenManager:  # does not work in included file
#    Screen1:
#    Screen2:

<Screen1>:
    name: 's1'  # corrected location of this line
    BinsMapView:
        lat: app.latitude
        lon: app.longitude
        zoom: 8
        on_zoom:
            self.zoom = 8 if self.zoom < 8 else self.zoom
        on_lat:
            self.start_getting_bins_in_fov()
        on_lon:
            self.start_getting_bins_in_fov()


        MDRaisedButton:

            text: "find closest bin"
            pos: root.width * 0.39, root.height * 0.1
            size: root.width * 0.25, root.height * 0.07
            md_bg_color: 102/255, 153/255, 255/255, 1
            halign: 'center'
            on_release: app.r()
<Screen2>:
    name: 's2'
    MDFloatLayout:

        MDRaisedButton:
            text: "go to next page"
            pos: root.width * 0.39, root.height * 0.1
            size: root.width * 0.25, root.height * 0.07
            md_bg_color: 102/255, 153/255, 255/255, 1
            halign: 'center'
            on_release: root.manager.current='s1'  # added this to switch screens back

【讨论】:

感谢您的帮助,我取得了一些进展,现在的问题是 BinsMapView 类不能同时从 Screen 和 MapView 继承,我需要将 kivy 文件中的类命名为 BinsMapView ,因为地图不会以其他方式显示。如果你想检查更新的代码。 github.com/Mapquestions/map/tree/updated 错误:'BinsMapView' 对象没有属性 'manager' 可能是因为它不是从 Screen 继承的。 我认为您只需将Screen1 中的MDFloatLayout 替换为BinsMapView。请参阅我的更新答案。 非常感谢你,这对你很尊重。

以上是关于Kivy/ Kivymd 地图切换屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何在 KivyMD 的 .kv 文件中使用 kivy 中的数据表?

在 kivy2 或 kivymd 中,有没有一种方法可以动态创建屏幕而不将它们添加到 kv 文件中

具有多个屏幕的 KivyMD 菜单

KivyMD DatePicker 不随屏幕大小调整大小

如何使用 KivyMD 工具栏切换屏幕

如何在每个屏幕上保留一个 kivymd 工具栏?