Kivy ScreenManager切换屏幕离开按钮

时间:2018-02-15 02:35:48

标签: python kivy kivy-language

我正在使用ScreenManager来切换屏幕但是当我正常切换屏幕时,该屏幕上的按钮会保持不变。我必须将按钮复制到每个屏幕。有没有办法在按住按钮的同时切换屏幕?

这是我的应用代码:

import (...)


class AppContainer(FloatLayout):
    pass


class NavButtons(BoxLayout):
    pass


class FirstScreen(Screen):
    pass


class SecondScreen(Screen):
    pass


class Screens(ScreenManager):
    pass


class MainApp(App):
    def build(self):
        return AppContainer()

(...)

,kv文件如下所示:

#:import BoxLayout kivy.uix.boxlayout.BoxLayout

<AppContainer>:
    NavButtons:
    Screens:
        FirstScreen:
        SecondScreen:
        ThirdScreen:


<NavButtons>:
    orientation:'vertical'
    Button:
        on_press: root.manager.current="first"
        text: 'First'
        pos_hint:{"top": 1, "left": 0}
    Button:
        on_press: root.manager.current="second"
        text: 'Second'
        pos_hint:{"top":0.8, "left": 0}
<Button>:
    size_hint: 0.2, 0.2


<FirstScreen>:
    name: "first"
    Label:
        text: "First Screen"


<SecondScreen>:
    name: "second"
    Label:
        text: "Second Screen"

但是这会引发错误:AttributeError:'NavButtons'对象没有属性'manager'

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在按钮字段中,根目录为NavButtons,正如您所看到的NavButtons没有屏幕作为子项,访问Screens的方法是通过{{1在这种情况下返回到app.root,我们将其设置为AppContainer,我们可以访问它,因为他是一个孩子。

Screens