首页 > 解决方案 > 带有屏幕管理器的 kivy 菜单栏和单独屏幕上的新菜单

问题描述

这个答案显示了如何制作一个在屏幕之间切换的菜单。 带有菜单栏的 Kivy

但是现在我在第二个屏幕上,我需要在那个屏幕上放两个按钮

一个确定和一个取消按钮。

OK 将您带到一个屏幕,显示信息已处理,

Cancel 将我带回到每个示例的屏幕之一。

我曾尝试安装第二个屏幕管理器,但它不喜欢那样。这是如何处理的?

<Display>:
    BoxLayout:
        orientation: "vertical"

        BoxLayout:
            size_hint: 1, None
            height: '48dp'
            Button:
                text: 'One'
                on_release: 
                    sm.current = 'screen_one'  #<<<<<<<<<<<<<<<<
                    sm.transition.direction = "left"
            Button:
                text: 'Two'
                on_release: 
                    sm.current = 'screen_two'  #<<<<<<<<<<<<<<<<
                    sm.transition.direction = "right"
            Button:
                text: 'Three'
                on_release: 
                    sm.current = 'screen_three'  #<<<<<<<<<<<<<<<<
                    sm.transition.direction = "right"

        ScreenManager:
            id: sm
            Screen_One:
            Screen_Two:
            Screen_Three:

<Screen_One>:
    name: 'screen_one'      #<<<<<<<<<<<<<<<<
    Button:
        text: 'One'
    


<Screen_Two>:
    name: 'screen_two'      #<<<<<<<<<<<<<<<<
    BoxLayout:
        size_hint: 1, None
        height: '48dp'

        Button:
            text: 'Cancel'
            on_release: 
                sm1.current = 'screen_one'  #<<<<<<<<<<<<<<<<
                sm1.transition.direction = "left"

        Button:
            text: 'Ok'
            on_release: 
                sm1.current = 'screen_three'  #<<<<<<<<<<<<<<<<
                sm1.transition.direction = "right"

    ScreenManager:
        id: sm1
        Screen_One:
        Screen_Two:
        Screen_Three:
            
    

<Screen_Three>:
    name: 'screen_three'      #<<<<<<<<<<<<<<<<
    Button:
        text: 'Three'



        
            


    
        



        
            



    
        

标签: kivy

解决方案


Each instance of Screen has a manager property, which is a reference to the ScreenManager that is managing it. So, in your kv, you can replace sm1 with root.manager like this:

            root.manager.current = 'screen_three'  #<<<<<<<<<<<<<<<<

推荐阅读