Итак, у меня есть панель инструментов, и я хочу использовать ее для переключения между экранами, но я хочу, чтобы она оставалась там, пока я свободно меняю экраны.
Если я пытаюсь поместить GridLayout в класс ScreenManagerэто дает мне ошибку, поэтому вместо этого я создаю GridLayout и встраиваю в него Screen Manager.Но, похоже, это не работает так, как я хочу.
storeapp.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
class ScreenSwitcher(ScreenManager):
def __init__(self, **kwargs):
super(ScreenSwitcher, self).__init__(**kwargs)
self.add_widget(ScreenOne(name='sone'))
self.add_widget(ScreenTwo(name='stwo'))
class ScreenOne(Screen):
pass
class ScreenTwo(Screen):
pass
class MainScreen(GridLayout):
manager = ScreenSwitcher()
class StoreApp(App):
def build(self):
return MainScreen()
if __name__ == "__main__":
StoreApp().run()
store.kv
#:kivy 1.10.1
<ToolBar@BoxLayout>:
size_hint_y: None
height: 35
pos_hint: {'top': 1, 'y': 0}
padding: 5,2,5,2
spacing: 5
canvas:
Color:
rgba: .7, 1, .7, 1
Rectangle:
pos: self.pos
size: self.size
<ToolButton@Button>:
color: 0,0,0,1
align: 'center'
<ScreenOne>:
Label:
text: 'SCREEN ONE'
font_size:50
<ScreenTwo>:
Label:
text: 'SCREEN TWO'
font_size:50
<MainScreen>:
rows: 2
size_hint: 1, 1
ToolBar:
ToolButton:
text: 'Screen one'
on_press:
root.manager.current = 'sone'
ToolButton:
text: 'Screen two'
on_press:
root.manager.current = 'stwo'
ScreenSwitcher:
ПРОБЛЕМА: два экранапересекаются, и нажатие кнопок ничего не меняет.