kivy教程:实现屏幕切换、数据传递和函数绑定
kivy相关教程特别少,在youtube看了一些教程,学会了屏幕切换,但是没有搞清楚屏幕间的数据如何传递。比如在登录页面输入了账号密码,如何在另外一个页面获取这里输入的账号密码呢?还有一个问题就是如何让kv文件绑定py文件的方法,实现了这个功能,就能让用py编程去控制kv的界面了。直接上代码:
main.py文件内容:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.core.text import LabelBase
LabelBase.register(name='ZH',fn_regular='./simkai.ttf') #用于设置中文
Builder.load_file("ss.kv")
class NewGameScreen(Screen):
class Gao(Widget):
label = ObjectProperty(None)
def btn(self,label):
label.text='处理后'+label.text
class OptionScreen(Screen):
pass
class TestApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(NewGameScreen())
sm.add_widget(OptionScreen())
return sm
if __name__ == '__main__':
TestApp().run()
ss.ky文件:
<NewGameScreen>:
name: 'newgame'
label:label_id
BoxLayout:
orientation: 'vertical'
TextInput:
id:label_id
text:'输入'
font_name:'ZH'
on_text:
root.manager.get_screen('options').label.text = str(self.text)
Button:
text: '提交'
font_name:'ZH'
on_press:
root.Gao.btn(self,label_id)
root.manager.transition.direction = 'left'
root.manager.current = 'options'
#root.manager.current = 'options' if label_id.text == '123' else "newgame" #输入为 123 时才跳转
<OptionScreen>:
label: label_id
name: 'options'
orientation: 'vertical'
BoxLayout:
Button:
text: '返回'
font_name:'ZH'
on_press:
root.manager.transition.direction = 'right'
root.manager.current = 'newgame'
Label:
id: label_id
text: '1'
font_name:'ZH'
还有一个文件 simkai.ttf,这个是中文字体,没有这个无法显示中文。
欢迎交流讨论。
请先 后发表评论~