【发布时间】:2020-06-13 17:19:36
【问题描述】:
应用的概念
我正在尝试创建一个在初始阶段将包含 2 个窗口的应用程序。
第一个窗口 (LoginScreen) 是一个带有按钮的登录窗口,当您单击该按钮时,它会将您带到第二个窗口。
第二个窗口 (MapScreen) 应该使用 MapView 小部件显示地图。
问题描述
启动应用程序后,LoginScreen 正常工作。
移动到 MapScreen 后,只有没有地图的 MapMarketPopup 小部件可见。
代码
main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
class LoginScreen(Screen):
pass
class MapScreen(Screen):
pass
GUI = Builder.load_file("main.kv")
class MainApp(App):
def build(self):
return GUI
def change_screen(self, screen_name):
screen_manager = self.root.ids['screen_manager']
# screen_manager.transition = WipeTransition()
screen_manager.current = screen_name
MainApp().run()
main.kv
#:include loginscreen.kv
#:include mapscreen.kv
GridLayout:
cols: 1
ScreenManager:
id: screen_manager
LoginScreen:
name: "login_screen"
id: login_screen
MapScreen:
name: "map_screen"
id: map_screen
loginscreen.kv
<LoginScreen>:
Button:
text: "Go to MapScreen"
on_press: app.change_screen("map_screen")
mapscreen.kv
#:import MapView kivy.garden.mapview.MapView
<MapScreen@MapView>:
lat: 52
lon: 21
zoom: 10
double_tap_zoom: True
on_lat:
print(self.lat)
on_lon:
print(self.lon)
MapMarkerPopup:
lat: 52
lon: 21
Button:
on_release:
root.center_on(52,21)
print(root.get_bbox())
问题
有谁知道我在哪里犯了错误以及如何改正?
【问题讨论】:
-
更好的方法是包含一个
MapView小部件作为MapScreen的子小部件,而不是扩展MapView。
标签: python kivy kivy-language