python - 如何在kivy中制作地图屏幕,我只会黑屏
问题描述
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.textinput import TextInput
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import StringProperty
from kivy.properties import ObjectProperty
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout
from kivy_garden.mapview import MapView
kv = '''
<Login>
ben: benName.text
pw: passwort.text
knopf: btn
knopff: btnn
GridLayout:
cols: 1
size: root.width,root.height
GridLayout:
cols: 2
Label:
text: "Username"
font_size: 25
TextInput:
id: benName
multiline: False
font_size: 30
Label:
text: "Password"
font_size: 25
bold: True
TextInput:
password: True
id: passwort
multiline: False
font_size: 40
Button:
size_hint: (1.,1.10)
text:" Start "
id: btn
font_size: 40
on_release:
root.manager.current = "Map" if passwort.text == "1" and benName.text == "1" else "login"
root.manager.transition.direction = "down"
Button:
size_hint: (1.,1.10)
text: " Exit "
id: btnn
font_size: 40
on_release: app.stop()
<Map>
BoxLayout:
Button:
text: " [back] "
bold: True
font_size: 17
size_hint: (None,None)
width: 100
height: 40
on_release: app.stop()
'''
MyApp
班级:
class Login(Screen):
ben = StringProperty()
pw = StringProperty()
knopf = ObjectProperty()
class MyApp(App):
Builder.load_string(kv)
def build(self):
ms = ScreenManager()
ms.add_widget(Login(name='login'))
ms.add_widget(Map(name='Map'))
self.title = "MyApp"
return ms
class Map(Screen):
def build(self):
mapview = MapView(zoom=11, lat=50.6394, lon=3.057)
return mapview
if __name__ == '__main__':
MyApp().run()
解决方案
您build()
在Map
类中的方法永远不会被调用(它不会自动调用)。我建议您将build()
方法更改为on_enter()
方法:
class Map(Screen):
def on_enter(self, *args):
mapview = MapView(zoom=11, lat=50.6394, lon=3.057)
self.ids.map.add_widget(mapview)
并将map
id 添加到Map
规则中kv
:
<Map>
BoxLayout:
id: map
Button:
text: " [back] "
bold: True
font_size: 17
size_hint: (None,None)
width: 100
height: 40
on_release: app.stop()
推荐阅读
- java - 在随机数组中找到 10 个最高频率 - Java
- python - python中的正则表达式根据字符串的匹配过滤文件
- php - 如何有效地查询具有多个条件的帖子?
- google-cloud-platform - 在 Google Cloud SQL 中读取通信数据包时出错
- python - 如何根据数学期望分配概率
- python - 如何使用 Python 获取第一个 8 位 CUSIP(compustat 数据库)?
- azure - 如何配置 google 域以指向 Azure webapp
- ruby - 如何使红宝石在二进制函数之前指示错误?
- python - 无法在python中打开文件
- javascript - 平滑滚动到元素时如何在没有jquery的情况下控制滚动时间?