我正在尝试创建一个应用程序,它在初始阶段将由两个窗口组成
第一个窗口(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())
有人知道我在哪里犯了错误以及如何改正吗
解决方案
我解决这个问题的方法是创建一个动态类
MapScreen
是我的第二个屏幕对象和MapView
小部件,用作MapScreen
的子对象代码
mapscreen.kv
额外评论
我还发现,在创建动态类时,不需要在main.py中声明类
相关问题 更多 >
编程相关推荐