[英]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.