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 中的数据表?