【问题标题】:Kivy: How to access a nested screenmanager from within any screen in kvlangKivy:如何从 kvlang 的任何屏幕中访问嵌套的屏幕管理器
【发布时间】:2016-02-11 17:25:41
【问题描述】:

当您想更改 kvlang 中的根屏幕管理器时,您可以在任何屏幕中执行以下操作:

Button:
    text: 'press me to change the screen of the root manager'
    on_press: app.root.current = 'name_of_target_screen'

如果此按钮位于屏幕管理器管理的屏幕上,您也可以执行以下操作:

Button:
    text: 'press me to change the current screen'
    on_press: root.manager.current = 'name_of_target_screen'

但是,当您有这样的嵌套屏幕管理器时:

[Root screen manager]
     [screen 1]
     [screen 2]
       [BoxLayout]
          [sidescreen]
              [button to change nested screen manager]
          [nested screen manager]
              [nested screen 1]
              [nested screen 2]

我不知道如何从 [sidescreen] 中更改嵌套屏幕管理器,因为我不知道如何引用它。 有人知道吗?

一个最小的工作示例: http://pastebin.com/1i5Ysbu3

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    将<ScreenTwo> 内的嵌套屏幕管理器id 设置为某个值,例如id: nested_screenmanager,然后将其传递给按钮,例如on_press: nested_screenmanager.current = 'SecondNested'。 ids 列表对规则内的所有小部件可见。

    【讨论】:

    • 太好了,我知道这很简单。我完全被名称/id/类名的混乱弄糊涂了。我的第一个错误:不知道确切使用哪个。我的第二个错误:在<NestedScreenManagement> 而不是<Screen2> 中定义它们。我的第三个错误,尝试设置root.nested_screenmanager.current 而不是像您建议的那样设置nested_screenmanager.current。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多