【问题标题】:Kivy Screen Manager Can't Switch Between ScreensKivy 屏幕管理器无法在屏幕之间切换
【发布时间】:2019-07-18 06:36:08
【问题描述】:

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

我在网上查了一下,有多种方法可以在屏幕之间切换,但我发现这种方式最简单、最干净,尽管它对我不起作用。

代码将不言自明。

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'

【问题讨论】:

    标签: python kivy


    【解决方案1】:

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

    Kv Language » ids

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      相关资源
      最近更新 更多