Kivy帮助:小部件和屏幕管理器

时间:2013-07-10 17:25:04

标签: python widget screen kivy

所以我正在创建一个应用程序,我需要这个东西:

小工具1:   - GridLayout包含来自JSON文件的数据,每个数据行都转到一个按钮,所以基本上当你点击按钮时会出现一个弹出框。   - 弹出:这个包含一个数字键盘来输入密码,然后你点击一个按钮进入主要的小部件

主要小部件:   - 这个从JSON文件中读取数据,然后将其放在网格布局上,就像在小部件1上一样

我可以在python中完成小部件,而不是用kv语言,我只是不能做一件事:从小部件1改为主小部件......请帮助我,我坚持这件事很长一段时间......

1 个答案:

答案 0 :(得分:2)

要在屏幕之间切换,您只需使用current属性即可。基本上你必须告诉ScreenManager哪个是当前屏幕,但首先你必须在它们上面写一个名字。这里有一个例子:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout

Builder.load_string("""
<Phone>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'
        ScreenManager:
            size_hint: 1, .9
            id: _screen_manager
            Screen:
                name: 'screen1'
                Label: 
                    text: 'The first screen'
            Screen:
                name: 'screen2'
                Label: 
                    text: 'The second screen'
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'bottom'
        BoxLayout:
            orientation: 'horizontal'
            size_hint: 1, .1
            Button:
                text: 'Go to Screen 1'
                on_press: _screen_manager.current = 'screen1'
            Button:
                text: 'Go to Screen 2'
                on_press: _screen_manager.current = 'screen2'""")

class Phone(FloatLayout):
    pass

class TestApp(App):
    def build(self):
        return Phone()

if __name__ == '__main__':
    TestApp().run()

该行

on_press: _screen_manager.current = 'screen1'

将告诉屏幕管理员使用另一行

更改名为“screen1”的屏幕
name: 'screen1'