簡體   English   中英

Kivy ScreenManager切換屏幕並留下按鈕

[英]Kivy ScreenManager switch screens leaving buttons

我正在使用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'

有任何想法嗎?

在按鈕字段中,根目錄為NavButtons ,並且您可以看到NavButtons沒有將Screens作為子級,一種訪問Screens是通過app.root在這種情況下返回AppContainer ,我們將其設置為Screens和由於他是孩子,我們訪問此頁面。

#:import BoxLayout kivy.uix.boxlayout.BoxLayout

<AppContainer>:
    NavButtons:
    Screens:
        id: sm
        FirstScreen:
        SecondScreen:

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

[...]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM