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,这个是中文字体,没有这个无法显示中文。

欢迎交流讨论。

举报
评论 0