Kivy屏幕管理器无法在屏幕之间切换

时间:2019-07-17 18:21:47

标签: python kivy

我想切换到第二个屏幕并返回,但是当我按下绑定到它的按钮时,什么也没做。

我在网上环顾四周,有多种方法可以在屏幕之间切换,但是我发现这种方法最简单,最干净,尽管它对我不起作用。

代码将是不言自明的。

python代码:

class Manager(ScreenManager):
    pass


class Screen_one(Screen):
    pass


class Screen_two(Screen):
    pass


class Screen_three(Screen):
    pass

kv文件的一部分:

    ScreenManager:
        id: sm
        Screen_one:
            id: screen_one
            name: 'screen1'
            manager: 'sm'
        Screen_two:
            id: screen_two
            name: 'screen2'
            manager: 'sm'
        Screen_three:
            id: screen_three
            name: 'screen3'
            manager: 'sm'
<Screen_one>:
    FloatLayout:
        Button:
            text: "Click1"
            size_hint: .2, .05
            pos_hint: {'x': .2, 'y': .4}
            on_release: app.root.current = 'screen2'
        Label:
            text: 'Hello!'
            pos_hint: {'x': -0.2, 'y': 0}

<Screen_two>:
    FloatLayout:
        canvas.before:
            Color:
                rgba: 1, 0, 0, 1
            Rectangle:
                size: self.size
                pos: self.pos
        Button:
            text: "Click2"
            size_hint: .2, .05
            pos_hint: {'x': .1, 'y': .3}
            on_release: app.root.current = 'screen1'

1 个答案:

答案 0 :(得分:1)

app.root.current替换所有出现的app.root.ids.sm.current,因为root不是ScreenManager,并使用idssm来引用孩子,ScreenManager:

Kv Language » ids

  

当解析您的kv文件时,kivy会收集所有标有的小部件   id,并将它们放在此 self.ids 字典类型属性中。